#ifndef __for_utils_h__ #define __for_utils_h__ #include "ranges/rheader.h" #include #include namespace MultiArrayHelper { namespace { template using to_size_t = size_t; } template struct XFPackNum { template static ETuple mkPos(size_t pos, const ETuple& et, const ETuple& lt, const Args&... args) { return std::move( XFPackNum::mkPos(pos, et, lt, std::get(lt) + pos * std::get(et), args...) ); } }; template <> struct XFPackNum<0> { template static ETuple mkPos(size_t pos, const ETuple& et, const ETuple& lt, const Args&... args) { return ETuple(std::get<0>(lt) + pos * std::get<0>(et), args...); } }; } // end namespace MultiArrayHelper #endif