3#ifndef pRC_CORE_TENSOR_VIEWS_DIRECT_SUM_H
4#define pRC_CORE_TENSOR_VIEWS_DIRECT_SUM_H
12 template<
class T,
class N,
class VA,
class VB>
13 requires IsTensorView<VA> && IsTensorView<VB>
20 template<
class XA,
class XB>
29 template<IsConvertible<Index>... Is>
30 requires(
sizeof...(Is) == Base::Dimension)
31 constexpr decltype(
auto)
operator()(Is
const... indices)
33 return this->call(indices...);
36 template<IsConvertible<Index>... Is>
37 requires(
sizeof...(Is) == Base::Dimension)
38 constexpr decltype(
auto)
operator()(Is
const... indices)
const
40 return this->call(indices...);
43 constexpr decltype(
auto)
operator()(
44 typename Base::Subscripts
const &subscripts)
47 [
this, &subscripts](
auto const... seq) ->
T
49 if(((subscripts[seq] < VA::size(seq)) && ...))
51 return mA(subscripts[seq]...);
53 else if(((subscripts[seq] >= VA::size(seq)) && ...))
55 return mB((subscripts[seq] - VA::size(seq))...);
64 constexpr decltype(
auto)
operator()(
65 typename Base::Subscripts
const &subscripts)
const
68 [
this, &subscripts](
auto const... seq) ->
T
70 if(((subscripts[seq] < VA::size(seq)) && ...))
72 return mA(subscripts[seq]...);
74 else if(((subscripts[seq] >= VA::size(seq)) && ...))
76 return mB((subscripts[seq] - VA::size(seq))...);
85 constexpr decltype(
auto)
operator[](
Index const index) =
delete;
86 constexpr decltype(
auto)
operator[](
Index const index)
const =
delete;
Definition direct_sum.hpp:15
DirectSum(XA &&a, XB &&b)
Definition direct_sum.hpp:23
Definition declarations.hpp:20
Definition concepts.hpp:28
Definition declarations.hpp:18
Size Index
Definition basics.hpp:32
static constexpr auto makeSeries()
Definition sequence.hpp:390
static constexpr decltype(auto) expand(Sequence< T, Seq... > const, F &&f, Xs &&...args)
Definition sequence.hpp:383
static constexpr auto zero()
Definition zero.hpp:12