12#ifndef __cxz_op_utility_cc_h__
13#define __cxz_op_utility_cc_h__
20 template <SizeT I,
class PosT>
21 constexpr decltype(
auto)
pos_get(
const PosT& pos)
28 return pos_get<I-1>(pos.next());
32 template <SizeT
J, SizeT I, SizeT...
Is>
35 static_assert(
J <
sizeof...(Is)+1,
"index out of range");
51 template <
class F,
class PosT,
class...
Ops>
56 typedef std::make_index_sequence<
sizeof...(Ops)>
Idxs;
57 typedef std::index_sequence<op_size<Ops>::value...>
OpSizes;
constexpr decltype(auto) pos_get(const PosT &pos)
constexpr SizeT sum_index_sequence(std::index_sequence< I, Is... > is)
auto pos_unpack_args_i(const F &f, const PosT &pos, const OpTuple &args, OpSizes opsizes, std::index_sequence< Is... > is)
Sptr< Range > rangeCast(const RangePtr r)
auto pos_unpack_args(const F &f, const PosT &pos, const Tuple< Ops... > &args)
Operation utilities declarations.
Position types declarations.