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>
13 requires(IsTensorView<Vs> && ...)
30 , mArgs(forward<Xs>(args)...)
34 using Base::operator=;
36 template<IsConvertible<Index>... Is>
37 requires(
sizeof...(Is) == Base::Dimension)
38 constexpr decltype(
auto)
operator()(Is
const... indices)
40 return operator()(
typename Base::Subscripts(indices...));
43 template<IsConvertible<Index>... Is>
44 requires(
sizeof...(Is) == Base::Dimension)
45 constexpr decltype(
auto)
operator()(Is
const... indices)
const
47 return operator()(
typename Base::Subscripts(indices...));
50 constexpr decltype(
auto)
operator()(
51 typename Base::Subscripts
const &subscripts)
55 [
this, &subscripts](
auto const... ops) ->
decltype(
auto)
57 return mF(get<ops>(mArgs)(subscripts)...);
61 constexpr decltype(
auto)
operator()(
62 typename Base::Subscripts
const &subscripts)
const
66 [
this, &subscripts](
auto const... ops) ->
decltype(
auto)
68 return mF(get<ops>(mArgs)(subscripts)...);
72 constexpr decltype(
auto)
operator[](
Index const index)
77 [
this, &index](
auto const... ops) ->
decltype(
auto)
79 return mF(get<ops>(mArgs)[index]...);
83 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(
96 [[maybe_unused]]
typename Base::Subscripts
const &subscripts)
100 if(subscripts.isOutOfRange())
107 static constexpr auto check([[maybe_unused]]
Index const index)
111 if(!(index < Base::size()))
Definition gtest_unittest.cc:5120
Definition subscripts.hpp:21
Definition assignable.hpp:21
Definition declarations.hpp:20
Definition concepts.hpp:40
Definition concepts.hpp:28
Definition subscript.hpp:21
pRC::Float<> T
Definition externs_nonTT.hpp:1
static void error(Xs &&...args)
Definition log.hpp:14
Definition declarations.hpp:18
Size Index
Definition basics.hpp:32
static constexpr auto makeSeriesFor()
Definition sequence.hpp:399
std::tuple< Ts... > Tuple
Definition basics.hpp:23
std::invoke_result_t< F, Args... > ResultOf
Definition basics.hpp:59
constexpr auto cDebugLevel
Definition config.hpp:48
std::conditional_t< B, T, F > Conditional
Definition basics.hpp:56
static constexpr decltype(auto) expand(Sequence< T, Seq... > const, F &&f, Xs &&...args)
Definition sequence.hpp:383