3#ifndef pRC_CORE_TENSOR_VIEWS_REVERSE_H
4#define pRC_CORE_TENSOR_VIEWS_REVERSE_H
11 template<
class T,
class N,
class R,
class V>
17 Assignable<T, Sizes<Ns...>,
18 Reverse<T, Sizes<Ns...>, Sequence<Bool, Rs...>, V>>,
20 Reverse<T, Sizes<Ns...>, Sequence<Bool, Rs...>, V>>>
30 template<
class X, If<IsSame<V, RemoveReference<X>>> = 0>
36 using Base::operator=;
39 If<
IsSatisfied<(
sizeof...(Is) ==
typename Base::Dimension())>> = 0>
46 If<
IsSatisfied<(
sizeof...(Is) ==
typename Base::Dimension())>> = 0>
52 constexpr decltype(
auto)
operator()(
58 constexpr decltype(
auto)
operator()(
59 typename Base::Subscripts
const &
subscripts)
const
64 template<
class E = IsSubscriptable<V>,
65 class L = IsSame<Constant<Bool, Rs>...>, If<All<E, L>> = 0>
66 constexpr decltype(
auto)
operator[](
Index const index)
68 if constexpr((
Rs && ...))
70 return mA[Base::size() - 1 - index];
78 template<
class E = IsSubscriptable<V>,
79 class L = IsSame<Constant<Bool, Rs>...>, If<All<E, L>> = 0>
80 constexpr decltype(
auto)
operator[](
Index const index)
const
82 if constexpr((
Rs && ...))
84 return mA[Base::size() - 1 - index];
Definition sequence.hpp:56
Definition sequence.hpp:34
Definition assignable.hpp:22
constexpr decltype(auto) operator()(Is const ... indices) const
Definition reverse.hpp:47
constexpr decltype(auto) operator()(Is const ... indices)
Definition reverse.hpp:40
Reverse(X &&a)
Definition reverse.hpp:31
Definition reverse.hpp:12
Definition type_traits.hpp:32
Definition diagonal.hpp:11
bool Bool
Definition type_traits.hpp:18
std::enable_if_t< B{}, int > If
Definition type_traits.hpp:68
std::size_t Size
Definition type_traits.hpp:20
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
Size Index
Definition type_traits.hpp:21