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>
14 template<
class T,
Size... Ns,
Bool... Rs,
class V>
18 Assignable<T, Sizes<Ns...>,
19 Reverse<T, Sizes<Ns...>, Sequence<Bool, Rs...>, V>>,
21 Reverse<T, Sizes<Ns...>, Sequence<Bool, Rs...>, V>>>
36 using Base::operator=;
38 template<IsConvertible<Index>... Is>
39 requires(
sizeof...(Is) == Base::Dimension)
40 constexpr decltype(
auto)
operator()(Is
const... indices)
42 return mA((Rs ? Ns - indices - 1 : indices)...);
45 template<IsConvertible<Index>... Is>
46 requires(
sizeof...(Is) == Base::Dimension)
47 constexpr decltype(
auto)
operator()(Is
const... indices)
const
49 return mA((Rs ? Ns - indices - 1 : indices)...);
52 constexpr decltype(
auto)
operator()(
53 typename Base::Subscripts
const &subscripts)
55 return this->call(subscripts);
58 constexpr decltype(
auto)
operator()(
59 typename Base::Subscripts
const &subscripts)
const
61 return this->call(subscripts);
64 constexpr decltype(
auto)
operator[](
Index const index)
66 (((Rs ==
false) && ...) || (Rs && ...))
68 if constexpr((Rs && ...))
70 return mA[Base::size() - 1 - index];
78 constexpr decltype(
auto)
operator[](
Index const index)
const
80 (((Rs ==
false) && ...) || (Rs && ...))
82 if constexpr((Rs && ...))
84 return mA[Base::size() - 1 - index];
Definition gtest_unittest.cc:5120
Definition sequence.hpp:29
Definition assignable.hpp:21
Reverse(X &&a)
Definition reverse.hpp:31
Definition reverse.hpp:12
Definition declarations.hpp:20
Definition concepts.hpp:28
Definition subscript.hpp:21
Definition declarations.hpp:36
pRC::Float<> T
Definition externs_nonTT.hpp:1
Definition declarations.hpp:18
Size Index
Definition basics.hpp:32
std::size_t Size
Definition basics.hpp:31
std::conditional_t< B, T, F > Conditional
Definition basics.hpp:56
Definition gtest_pred_impl_unittest.cc:54