我尝试实现模板类,并希望将其限制为专门用于某些给定的模板类。例如,在以下代码中,我想定义模板类CTest
,该模板类仅适用于某些模板参数std::vector<T>
的{{1}}。对于其他模板参数,该类应该是未定义的。如何实现模板类?
T
答案 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)
模板专业化可以使用与其专门化的类模板完全不同的接口来实现。无法限制可以存在哪些模板专业化。
如果您想对可用作模板参数的内容产生一些影响,请改用模板实例化。