diff --git a/src/amdis/common/TypeTraits.hpp b/src/amdis/common/TypeTraits.hpp index f1af06aeecd86e8eaf21b062df102b9e5003aad7..743bc76265ad8a3b334f4238f0dcd80202660022 100644 --- a/src/amdis/common/TypeTraits.hpp +++ b/src/amdis/common/TypeTraits.hpp @@ -97,4 +97,29 @@ namespace AMDiS return std::make_unique<TYPEOF(obj)>(FWD(obj)); } + + + template <template <class...> class> + constexpr bool is_template() { return true; } + +#if AMDIS_HAS_CXX_AUTO_TEMPLATE_PARAMETER + template <template <class,auto...> class> + constexpr bool is_template() { return true; } +#else + template <template <class,int...> class> + constexpr bool is_template() { return true; } + + template <template <class,std::size_t...> class> + constexpr bool is_template() { return true; } +#endif + + template <class> + constexpr bool is_template() { return false; } + + + template <bool... b> + using enable_if_all_t + = std::enable_if_t<std::is_same<std::integer_sequence<bool,true,b...>, + std::integer_sequence<bool,b...,true>>::value>; + } // end namespace AMDiS