diff --git a/src/include/pack_num.h b/src/include/pack_num.h index f197c6e..a9d4adb 100644 --- a/src/include/pack_num.h +++ b/src/include/pack_num.h @@ -37,6 +37,14 @@ namespace MultiArrayHelper template struct PackNum { + template + static auto mkElemOperation(const MA& ma, const ITuple& ituple, IPtrs... iptrs) + -> decltype(PackNum::mkElemOperation(ma, ituple, std::get(ituple), iptrs...)) + { + return PackNum::mkElemOperation(ma, ituple, std::get(ituple), iptrs...); + } + + template static void printTuple(std::ostream& out, const std::tuple& tp) { @@ -94,6 +102,13 @@ namespace MultiArrayHelper template<> struct PackNum<0> { + template + static auto mkElemOperation(const MA& ma, const ITuple& ituple, IPtrs... iptrs) + -> decltype(ma(iptrs...)) + { + return ma(iptrs...); + } + template static void printTuple(std::ostream& out, const std::tuple& tp) { diff --git a/src/include/type_operations.h b/src/include/type_operations.h index 3491378..27a65dd 100644 --- a/src/include/type_operations.h +++ b/src/include/type_operations.h @@ -27,7 +27,7 @@ namespace MultiArrayTools inline auto apply(const MultiArray& ma) -> OperationRoot { - return mkElemOperation(ma, ituple); // -> pack_num + return PackNum::mkElemOperation(ma, ituple); } private: