3#ifndef pRC_CORE_TENSOR_VIEWS_LOOP_H
4#define pRC_CORE_TENSOR_VIEWS_LOOP_H
12 template<
class T,
class N,
class F,
class...
Vs>
15 ResultOf<Vs, typename Vs::Subscripts>...>>,
16 Assignable<T, N, Loop<T, N, F, Vs...>>,
17 View<T, N, Loop<T, N, F, Vs...>>>
30 , mArgs(forward<
Xs>(
args)...)
34 using Base::operator=;
37 If<
IsSatisfied<(
sizeof...(Is) ==
typename Base::Dimension())>> = 0>
44 If<
IsSatisfied<(
sizeof...(Is) ==
typename Base::Dimension())>> = 0>
50 constexpr decltype(
auto)
operator()(
61 constexpr decltype(
auto)
operator()(
62 typename Base::Subscripts
const &
subscripts)
const
72 template<
class E = All<IsSubscriptable<Vs>...>, If<E> = 0>
73 constexpr decltype(
auto)
operator[](
Index const index)
77 [
this, &index](
auto const...
ops) ->
decltype(
auto)
79 return mF(get<ops>(mArgs)[index]...);
83 template<
class E = All<IsSubscriptable<Vs>...>, If<E> = 0>
84 constexpr decltype(
auto)
operator[](
Index const index)
const
88 [
this, &index](
auto const...
ops) ->
decltype(
auto)
90 return mF(get<ops>(mArgs)[index]...);
95 static constexpr auto check(
111 if(!(index < Base::size()))
Definition assignable.hpp:22
constexpr decltype(auto) operator()(Is const ... indices)
Definition loop.hpp:38
constexpr decltype(auto) operator()(Is const ... indices) const
Definition loop.hpp:45
Loop(F f, Xs &&...args)
Definition loop.hpp:28
Definition type_traits.hpp:32
pRC::Float<> T
Definition externs_nonTT.hpp:1
static void error(Xs &&...args)
Definition log.hpp:14
Definition diagonal.hpp:11
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
Size Index
Definition type_traits.hpp:21
std::enable_if_t< B{}, int > If
Definition type_traits.hpp:68
Constant< Bool, B > IsSatisfied
Definition type_traits.hpp:71
std::is_assignable< T, U > IsAssignable
Definition type_traits.hpp:146
constexpr auto cDebugLevel
Definition config.hpp:46
std::conditional_t< B{}, T, F > Conditional
Definition type_traits.hpp:131
std::conjunction< Bs... > All
Definition type_traits.hpp:77
static constexpr decltype(auto) expand(Sequence< T, Seq... > const, F &&f, Xs &&...args)
Definition sequence.hpp:344