我有一个模板类
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";
答案 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"