如何为类专门化模板模板参数?

时间:2016-03-15 16:09:14

标签: c++ templates

我有一个模板类

template <class T>
struct TypeText {
    static const char *text;
};

以及&#34; text&#34;的几个专业化构件:

template <> const char* TypeText<int>::text = "INT";
template <> const char* TypeText<long>::text = "LONG";

如何在std::vector<A,B>A之前没有先验知识的情况下实现B的专业化?是否可以将std::vector<A,B>SomeOtherClass<A,B>区分开来?

以下不起作用:

template <>
template <class T, class A>
const char* TypeText< std::vector<T,A> >::text = "vector";

1 个答案:

答案 0 :(得分:2)

您可以为std::vector提供partial template specialization

template <class T>
struct TypeText<std::vector<T>> {
    static const char *text;
};
template <class T>
const char* TypeText<std::vector<T>>::text = "vector";

然后使用它,如:

...TypeText<std::vector<int>>::text...    // "vector"
...TypeText<std::vector<long>>::text...   // "vector"

LIVE