【发布时间】:2013-05-27 19:18:54
【问题描述】:
我基本上是在尝试做Template specialization of a single method from a templated class 中讨论的事情,只是我的 TClass 有多个模板参数,如下所示:
template < class KEY, class TYPE >
class TClass
{
public:
:
void doSomething(KEY * v);
:
};
template < class KEY, class TYPE >
void TClass<KEY, TYPE>::doSomething(KEY * v)
{
// do something
}
到目前为止,这可行,但是如何为一个模板参数定义专门的实现?我试着添加这个:
template < class TYPE >
void TClass<int, TYPE>::doSomething(int * v)
{
// do something if KEY is int
}
但编译器抱怨该方法/函数的“无法将函数定义与现有声明匹配”(VC2010)。
作为旁注:如果我同时专门化两个模板参数,它会起作用:
template < >
void TClass<int, char>::doSomething(int * v)
{
// do something if KEY is int and TYPE is char
}
但这不是我想做的。
有什么建议吗?
【问题讨论】:
-
顺便说一句,来自 VS2015 的错误消息可能非常无用。 C3860:模板参数顺序错误,C2995:模板已定义。
标签: c++ visual-studio-2010 templates specialization