检查类是否是模板类

时间:2015-04-01 04:26:39

标签: c++ templates

有没有办法在编译时检测类是模板类还是简单类?

例如:

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
{
};

1 个答案:

答案 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 {};

Live example

请注意,它不会处理模板化值(std::array<T, N>)。