12#ifndef __cxz_index_mul_cc_h__ 
   13#define __cxz_index_mul_cc_h__ 
   28    static_assert(
sizeof...(Is) == 
sizeof...(
Indices), 
"inconsistent index sequence");
 
 
   37    static_assert(
sizeof...(Js) == 
sizeof...(
Indices), 
"inconsistent index sequence");
 
 
   47    static_assert(
sizeof...(Is) == 
sizeof...(
Indices1), 
"inconsistent index sequence");
 
   48    static_assert(
sizeof...(Js) == 
sizeof...(
Indices2), 
"inconsistent index sequence");
 
 
   58    template <
class I1, 
typename Meta1, 
class I2, 
typename Meta2>
 
   62    if constexpr(std::is_same<I1,YIndex>::value 
or std::is_same<I2,YIndex>::value 
or 
   63             std::is_same<I1,DIndex>::value 
or std::is_same<I2,DIndex>::value) {
 
 
   75    return b.lmul(std::make_shared<I1>(a.
THIS()));
 
 
   82    return a.
rmul(std::make_shared<I2>(
b.THIS()));
 
 
   85    template <
class Index, 
class... 
Indices>
 
   93    template <
class Index, 
class... 
Indices>
 
  107    template <
class I1, 
typename Meta1>
 
  110    return b.lmul(std::make_shared<I1>(a.
THIS()));
 
 
  113    template <
class I2, 
typename Meta2>
 
  116    return a.
rmul(std::make_shared<I2>(
b.THIS()));
 
 
  128    template <
class I1, 
class I2>
 
  132    if constexpr(std::is_same<I1,YIndex>::value 
or std::is_same<I2,YIndex>::value 
or 
  133             std::is_same<I1,DIndex>::value 
or std::is_same<I2,DIndex>::value) {
 
 
DPack rmul(const Sptr< DIndex > &i) const
DPack mul(const DPack &p) const
constexpr decltype(auto) rmul(const Sptr< Index > &i) const
constexpr decltype(auto) mul(const SPack< Indices2... > &p) const
DPack dpack(const Indices &... inds)
DPack dpackp(const Sptr< Indices > &... inds)
constexpr decltype(auto) spack(const Indices &... inds)
std::integral_constant< SizeT, N > CSizeT
Sptr< Range > rangeCast(const RangePtr r)
std::index_sequence< Is... > Isq
decltype(auto) iptrMul(const Sptr< I1 > &a, const Sptr< I2 > &b)
constexpr decltype(auto) spackp(const Sptr< Indices > &... inds)
std::shared_ptr< T > Sptr
static decltype(auto) evalMX(const Sptr< GMIndex< BlockT, Indices... > > &a, const Sptr< I > &b, Isq< Is... > is)
static decltype(auto) evalXM(const Sptr< I > &a, const Sptr< GMIndex< BlockT, Indices... > > &b, Isq< Js... > js)
static decltype(auto) evalMM(const Sptr< GMIndex< BlockT1, Indices1... > > &a, const Sptr< GMIndex< BlockT2, Indices2... > > &b, Isq< Is... > is, Isq< Js... > js)