3#ifndef pRC_CORE_TENSOR_OPERATOR_VIEWS_OFF_DIAGONAL_H
4#define pRC_CORE_TENSOR_OPERATOR_VIEWS_OFF_DIAGONAL_H
12 template<
class T,
class N,
class V>
13 requires IsTensorView<V>
27 template<IsConvertible<Index>... Is>
28 requires(
sizeof...(Is) == Base::Dimension)
29 constexpr decltype(
auto)
operator()(Is
const... indices)
31 return this->call(indices...);
34 template<IsConvertible<Index>... Is>
35 requires(
sizeof...(Is) == Base::Dimension)
36 constexpr decltype(
auto)
operator()(Is
const... indices)
const
38 return this->call(indices...);
41 constexpr decltype(
auto)
operator()(
42 typename Base::Subscripts
const &subscripts)
45 [
this, &subscripts](
auto const... seq) ->
T
47 if(((subscripts[seq] ==
48 subscripts[Base::Dimension / 2 + seq]) &&
54 return mA(subscripts[seq]...,
55 subscripts[Base::Dimension / 2 + seq]...);
59 constexpr decltype(
auto)
operator()(
60 typename Base::Subscripts
const &subscripts)
const
63 [
this, &subscripts](
auto const... seq) ->
T
65 if(((subscripts[seq] ==
66 subscripts[Base::Dimension / 2 + seq]) &&
72 return mA(subscripts[seq]...,
73 subscripts[Base::Dimension / 2 + seq]...);
77 constexpr decltype(
auto)
operator[](
Index const index) =
delete;
78 constexpr decltype(
auto)
operator[](
Index const index)
const =
delete;
Definition off_diagonal.hpp:15
OffDiagonal(X &&a)
Definition off_diagonal.hpp:22
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