12#ifndef __cxz_eindex_cc_h__
13#define __cxz_eindex_cc_h__
22 template <
typename MetaT, SizeT S, SizeT L>
28 template <
typename MetaT, SizeT S, SizeT L>
29 template <
class Xpr,
class F>
35 template <
typename MetaT, SizeT S, SizeT L,
class I1>
41 template <
typename MetaT, SizeT S, SizeT L>
44 return std::make_shared<EIndex<MetaT,S,L>>(
i);
47 template <SizeT L,
typename MetaT, SizeT S>
53 template <
typename MetaT, SizeT S, SizeT L>
59 template <SizeT S, SizeT L1, SizeT L2,
class Index>
64 <<
" ) not dividable by extension size = " <<
S);
70 if constexpr(
L2 == 0){
78 template <
class Index, SizeT S, SizeT L>
84 template <
class Index, SizeT S, SizeT L1, SizeT L2>
#define CXZ_ASSERT(statement, errmsg)
EIndex(const Sptr< LIndex< SIndex< MetaT, S >, L > > &i)
Extension index declaration.
Statically labeled index.
decltype(auto) eindexPtr(const Sptr< LIndex< SIndex< MetaT, S >, L > > &i)
decltype(auto) eplex(const Sptr< Index > &i)
decltype(auto) xpr(const Sptr< I > &i)
std::integral_constant< SizeT, N > CSizeT
Sptr< Range > rangeCast(const RangePtr r)
decltype(auto) iptrMul(const Sptr< I1 > &a, const Sptr< I2 > &b)
constexpr decltype(auto) spackp(const Sptr< Indices > &... inds)
std::shared_ptr< T > Sptr
SRange, SRangeFactory and SIndex declaration.