3#ifndef pRC_CORE_TENSOR_VIEWS_REDUCE_H
4#define pRC_CORE_TENSOR_VIEWS_REDUCE_H
13 template<
class T,
class N,
class F,
class R,
class V>
16 template<
class T,
class N,
class F,
Index... Rs,
class V>
19 :
public View<T, N, Reduce<T, N, F, Sequence<Index, Rs...>, V>>
32 template<IsConvertible<Index>... Is>
33 requires(
sizeof...(Is) == Base::Dimension)
34 constexpr decltype(
auto)
operator()(Is
const... indices)
38 if constexpr(Base::Dimension == 0)
43 [
this, &c](
auto const i)
51 [
this, &c](
auto const...
loop)
53 c = F()(c, mA(
loop...));
60 [
this, &c, indices...](
auto const...
loop)
62 c = F()(c,
chip<Rs...>(mA,
loop...)(indices...));
69 template<IsConvertible<Index>... Is>
70 requires(
sizeof...(Is) == Base::Dimension)
71 constexpr decltype(
auto)
operator()(Is
const... indices)
const
75 if constexpr(Base::Dimension == 0)
80 [
this, &c](
auto const i)
88 [
this, &c](
auto const...
loop)
90 c = F()(c, mA(
loop...));
97 [
this, &c, indices...](
auto const...
loop)
99 c = F()(c,
chip<Rs...>(mA,
loop...)(indices...));
106 constexpr decltype(
auto)
operator()(
107 typename Base::Subscripts
const &subscripts)
109 return this->call(subscripts);
112 constexpr decltype(
auto)
operator()(
113 typename Base::Subscripts
const &subscripts)
const
115 return this->call(subscripts);
118 constexpr decltype(
auto)
operator[](
Index const index) =
delete;
119 constexpr decltype(
auto)
operator[](
Index const index)
const =
delete;
Definition sequence.hpp:29
Reduce(X &&a)
Definition reduce.hpp:27
Definition declarations.hpp:20
Definition concepts.hpp:28
Definition subscript.hpp:21
Definition declarations.hpp:36
pRC::Float<> T
Definition externs_nonTT.hpp:1
int i
Definition gmock-matchers-comparisons_test.cc:603
Definition declarations.hpp:18
Size Index
Definition basics.hpp:32
static constexpr auto loop(F &&f, Xs &&...args)
Definition loop.hpp:20
static constexpr auto chip(Sequence< T, Is... > const)
Definition sequence.hpp:584
static constexpr auto range(F &&f, Xs &&...args)
Definition range.hpp:18
Definition identity.hpp:11