diff --git a/src/include/multi_array_operation.cc.h b/src/include/multi_array_operation.cc.h index 1bb8393..919d1e7 100644 --- a/src/include/multi_array_operation.cc.h +++ b/src/include/multi_array_operation.cc.h @@ -631,11 +631,11 @@ namespace MultiArrayTools template template - inline T Operation::get(ET pos) const + inline auto Operation::get(ET pos) const { typedef std::tuple OpTuple; return PackNum:: - template mkOpExpr(mF, pos, mOps); + template mkOpExpr(mF, pos, mOps); } template diff --git a/src/include/multi_array_operation.h b/src/include/multi_array_operation.h index ac4d6b7..4d88ad1 100644 --- a/src/include/multi_array_operation.h +++ b/src/include/multi_array_operation.h @@ -506,7 +506,7 @@ namespace MultiArrayTools Operation(std::shared_ptr ff, const Ops&... ops); template - inline T get(ET pos) const; + inline auto get(ET pos) const; template inline Operation& set(ET pos); diff --git a/src/include/pack_num.h b/src/include/pack_num.h index 590246c..2797243 100644 --- a/src/include/pack_num.h +++ b/src/include/pack_num.h @@ -70,14 +70,14 @@ namespace MultiArrayHelper PackNum::mkExt(out, siar, second); } - template - static inline T mkOpExpr(std::shared_ptr f, const ETuple& pos, const OpTuple& ops, Args... args) + template + static inline auto mkOpExpr(std::shared_ptr f, const ETuple& pos, const OpTuple& ops, Args... args) { typedef typename std::remove_reference(ops))>::type NextOpType; static_assert(LAST >= NextOpType::SIZE, "inconsistent array positions"); static constexpr size_t NEXT = LAST - NextOpType::SIZE; typedef decltype(std::get(ops).get(Getter::template getX( pos ))) ArgT; - return PackNum::template mkOpExpr + return PackNum::template mkOpExpr ( f, pos, ops, std::get(ops).get(Getter::template getX( pos )), args...); } @@ -157,8 +157,8 @@ namespace MultiArrayHelper std::get<0>(out) = second.rootSteps( std::get<0>(siar) ); } - template - static inline T mkOpExpr(std::shared_ptr f, const ETuple& pos, const OpTuple& ops, const Args&... args) + template + static inline auto mkOpExpr(std::shared_ptr f, const ETuple& pos, const OpTuple& ops, const Args&... args) { typedef typename std::remove_reference(ops))>::type NextOpType; static constexpr size_t NEXT = LAST - NextOpType::SIZE;