3#ifndef pRC_CORE_TENSOR_VIEWS_PERMUTE_H
4#define pRC_CORE_TENSOR_VIEWS_PERMUTE_H
12 template<
class T,
class N,
class P,
class V>
15 template<
class T,
class N,
Index...
Ps,
class V>
18 Assignable<T, N, Permute<T, N, Sequence<Index, Ps...>, V>>,
19 View<T, N, Permute<T, N, Sequence<Index, Ps...>, V>>>
28 template<
class X, If<IsSame<V, RemoveReference<X>>> = 0>
34 using Base::operator=;
37 If<
IsSatisfied<(
sizeof...(Is) ==
typename Base::Dimension())>> = 0>
42 [
this](
auto const &
indices,
auto const...
seq) ->
decltype(
auto)
50 If<
IsSatisfied<(
sizeof...(Is) ==
typename Base::Dimension())>> = 0>
55 [
this](
auto const &
indices,
auto const...
seq) ->
decltype(
auto)
62 constexpr decltype(
auto)
operator()(
68 constexpr decltype(
auto)
operator()(
69 typename Base::Subscripts
const &
subscripts)
const
74 template<
class E = IsSubscriptable<V>,
75 class L = IsSatisfied<(
76 Sequence<Index, Ps...>() == makeSeriesFor<Index, Ps...>())>,
78 constexpr decltype(
auto)
operator[](
Index const index)
83 template<
class E = IsSubscriptable<V>,
84 class L = IsSatisfied<(
85 Sequence<Index, Ps...>() == makeSeriesFor<Index, Ps...>())>,
87 constexpr decltype(
auto)
operator[](
Index const index)
const
Definition indices.hpp:15
Definition sequence.hpp:34
Definition assignable.hpp:22
constexpr decltype(auto) operator()(Is const ... indices) const
Definition permute.hpp:51
Permute(X &&a)
Definition permute.hpp:29
constexpr decltype(auto) operator()(Is const ... indices)
Definition permute.hpp:38
Definition permute.hpp:13
Definition type_traits.hpp:32
Definition diagonal.hpp:11
std::enable_if_t< B{}, int > If
Definition type_traits.hpp:68
Constant< Bool, B > IsSatisfied
Definition type_traits.hpp:71
static constexpr Conditional< IsSatisfied< C >, RemoveConstReference< X >, X > copy(X &&a)
Definition copy.hpp:13
std::conditional_t< B{}, T, F > Conditional
Definition type_traits.hpp:131
static constexpr auto getPermutation(Sequence< T, From, Froms... > const, Sequence< T, To, Tos... > const, Sequence< T, P, Ps... > const)
Definition sequence.hpp:653
static constexpr decltype(auto) expand(Sequence< T, Seq... > const, F &&f, Xs &&...args)
forwards the values in a pRC::Sequence to a function as parameters
Definition sequence.hpp:354
Size Index
Definition type_traits.hpp:21