12#ifndef __cxz_index_pack_cc_h__
13#define __cxz_index_pack_cc_h__
43 return std::get<I>(mIs);
54 template <
class Index>
57 return SPack<
Indices...,Index>( std::tuple_cat(mIs,std::make_tuple(
i)) );
61 template <
class Index>
64 return SPack<Index,
Indices...>( std::tuple_cat(std::make_tuple(
i), mIs) );
77 return iter<0,
sizeof...(Indices)>( [&](
auto i) {
return get(
i)->range(); },
78 [](
const auto&...
e) {
return mrange(
e...); } );
84 return iter<0,
sizeof...(Indices)-1>
85 ( [&](
auto i) {
return get(
i)->lex() *
iter<
i+1,
sizeof...(Indices)>
86 ( [&](
auto j) {
return get(
j)->lmax().val(); },
87 [](
const auto&...
m) {
return (
m * ... ); } ); },
88 [](
const auto&...
e) {
return (
e + ... ); } ) +
DPack(const Vector< XIndexPtr > &is)
constexpr SPack(const Sptr< Indices > &... is)
constexpr const Tuple< Sptr< Indices >... > & all() const
DPack dpack(const Indices &... inds)
DPack dpackp(const Sptr< Indices > &... inds)
std::vector< T, Allocator< T > > Vector
constexpr decltype(auto) spack(const Indices &... inds)
RangePtr mrange(const Sptr< Ranges > &... rs)
std::integral_constant< SizeT, N > CSizeT
Sptr< Range > rangeCast(const RangePtr r)
XIndexPtr xindexPtr(const Sptr< Index > &i)
constexpr decltype(auto) spackp(const Sptr< Indices > &... inds)
std::shared_ptr< T > Sptr
constexpr decltype(auto) iter(const G &g, const F &f)