检查类型是否为模板特化

Check whether a type is a template specialization or not

给定一个任意模板class/struct,就像:

template <typename T>
struct A {};

我想执行 <type_traits> 时尚检查 (我们将其命名为 is_A) 以确定是否 任意 类型是否是 A 的 特化,就像:

#include <type_traits>

template <typename T>
struct is_A: std::integral_constant<bool, /* perform the check here */ > {};

constexpr bool test0 = is_A< A<int> >::value // true
constexpr bool test1 = is_A< A<float> >::value // true
constexpr bool test2 = is_A< int >::value // false
constexpr bool test2 = is_A< float >::value // false

这怎么可能?

提前致谢

您需要专攻 A<T>:

template <typename T>
struct is_A : std::false_type { };

template <typename T>
struct is_A<A<T>> : std::true_type { };