struct mask {
static constexpr bool is_range = std::is_base_of::value;
typedef mask next_t;
static constexpr int n_range_ellipsis= next_t::n_range_ellipsis + is_range;
static constexpr ull_t value = ((is_range ? P+1 : 0) << (4*c)) + next_t::value;
};
template struct _impl { static constexpr ull_t value = 0; };
template struct _impl {
static constexpr bool is_range = std::is_base_of::value;
struct r2 { // Intel ....
static constexpr ull_t pn = permutations::apply(mo,c);
static constexpr ull_t value = (ma >> (4*(pn))) & 0xFull;
};
static const bool r2_nozero = (r2::value!=0);
static constexpr ull_t value = (r2::value!=0 ? ( (r2::value-1) << (4*P) ) : 0)+ _impl::value;
};
template struct sliced_memory_order {
typedef mask<0,0,Args...> mask_t;
static constexpr ull_t value = mask_t::n_range_ellipsis + 0x10* _impl::value ;
};
#endif
}}}}}//namespace triqs::arrays
#endif