9
如何編寫模板或constexpr
代碼,以使match
只有在Ts
包含A
的實例時才爲true?將模板參數與模板類型匹配
template <std::uint32_t, int, int>
struct A;
template <typename... Ts>
struct X
{
constexpr bool match = ???;
};
如何編寫模板或constexpr
代碼,以使match
只有在Ts
包含A
的實例時才爲true?將模板參數與模板類型匹配
template <std::uint32_t, int, int>
struct A;
template <typename... Ts>
struct X
{
constexpr bool match = ???;
};
寫特質:
template<class>
struct is_A : std::false_type {};
template<std::uint32_t X, int Y, int Z>
struct is_A<A<X,Y,Z>> : std::true_type {};
然後使用它:
template <typename... Ts>
struct X
{
constexpr bool match = std::disjunction_v<is_A<Ts>...>;
};
爲std::disjunction
在C++ 11的實現見cppreference。
感謝您介紹std :: disjunction :) – Arunmu