diff --git a/include/aidge/utils/Parameter.hpp b/include/aidge/utils/Parameter.hpp index 0921940836bcd8c83bb1bd5a4e4473a5b7162d3a..7066db6359e39e3e364e9d06dc3bdd841333cbb0 100644 --- a/include/aidge/utils/Parameter.hpp +++ b/include/aidge/utils/Parameter.hpp @@ -140,10 +140,10 @@ public: } template <typename R, std::size_t SIZE = std::tuple_size<std::tuple<T...>>::value-1> - constexpr typename std::enable_if<(SIZE < std::numeric_limits<std::size_t>::max()), R&>::type get(std::size_t i) { - if (i == SIZE) { - if (std::is_same<R, typename std::tuple_element<SIZE,std::tuple<T...>>::type>::value) { - return reinterpret_cast<R&>(std::get<SIZE>(mParams)); + constexpr typename std::enable_if<(SIZE > 0), R&>::type get(std::size_t i) { + if (i == SIZE-1) { + if (std::is_same<R, typename std::tuple_element<SIZE-1,std::tuple<T...>>::type>::value) { + return reinterpret_cast<R&>(std::get<SIZE-1>(mParams)); } else { assert(false && "wrong parameter type"); @@ -155,7 +155,7 @@ public: } template <typename R, std::size_t SIZE = std::tuple_size<std::tuple<T...>>::value-1> - constexpr typename std::enable_if<(SIZE == std::numeric_limits<std::size_t>::max()), R&>::type get(std::size_t /*i*/) { + constexpr typename std::enable_if<(SIZE == 0), R&>::type get(std::size_t /*i*/) { assert(false && "parameter not found"); }