3#ifndef pRC_CORE_TENSOR_OPERATOR_VIEWS_DIAGONAL_H
4#define pRC_CORE_TENSOR_OPERATOR_VIEWS_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]) &&
51 return mA(subscripts[seq]..., subscripts[seq]...);
58 constexpr decltype(
auto)
operator()(
59 typename Base::Subscripts
const &subscripts)
const
62 [
this, &subscripts](
auto const... seq) ->
T
64 if(((subscripts[seq] ==
65 subscripts[Base::Dimension / 2 + seq]) &&
68 return mA(subscripts[seq]..., subscripts[seq]...);
75 constexpr decltype(
auto)
operator[](
Index const index) =
delete;
76 constexpr decltype(
auto)
operator[](
Index const index)
const =
delete;
Definition diagonal.hpp:15
Diagonal(X &&a)
Definition 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