diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/templates.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/core/templates.h b/src/core/templates.h index fcac61b..39befc1 100644 --- a/src/core/templates.h +++ b/src/core/templates.h @@ -16,7 +16,9 @@ struct parameter_pack_index<T, TL0, TL...> { 1u + parameter_pack_index<T, TL...>::value; }; -template <size_t N, class... T> struct parameter_pack_type; +template <size_t N, class... T> struct parameter_pack_type { + static_assert(always_false<T...>, "Should've been caught by the specializations"); +}; template <class TN, class... T> struct parameter_pack_type<0, TN, T...> { using type = TN; @@ -25,6 +27,7 @@ template <class TN, class... T> struct parameter_pack_type<0, TN, T...> { template <size_t N, class TN, class... T> struct parameter_pack_type<N, TN, T...> { static_assert(sizeof...(T) > 0, "Exhausted parameters"); + static_assert(N > 0, "Invalid number. Should've been caught"); using type = typename parameter_pack_type<N - 1, T...>::type; }; /* |