给定模板类的C ++类模板特化

时间:2013-05-19 10:06:37

标签: c++ templates specialization

我尝试实现模板类,并希望将其限制为专门用于某些给定的模板类。例如,在以下代码中,我想定义模板类CTest,该模板类仅适用于某些模板参数std::vector<T>的{​​{1}}。对于其他模板参数,该类应该是未定义的。如何实现模板类?

T

2 个答案:

答案 0 :(得分:2)

保留主要模板未定义且仅部分专用于您要承认的类型:

template <typename> class CTest;  // undefined


#include <vector>

template <typename T, typename Alloc>
class CTest<std::vector<T, Alloc>>
{
    // ... your template here ...
};

答案 1 :(得分:0)

模板专业化可以使用与其专门化的类模板完全不同的接口来实现。无法限制可以存在哪些模板专业化。

如果您想对可用作模板参数的内容产生一些影响,请改用模板实例化。