有没有办法在编译时检测类是模板类还是简单类?
例如:
class A
{
public:
void GetValue()
{
return 10 (compile time check? "": "+ 10"); // just an example
}
};
class B : public A
{
};
template <class T>
class C : public A
{
};
答案 0 :(得分:3)
您可以为此创建特征:
template <typename T>
struct is_type_templated : std::false_type {};
template <template <typename...> class C, typename ... Ts>
struct is_type_templated<C<Ts...>> : std::true_type {};
请注意,它不会处理模板化值(std::array<T, N>
)。