基本上,我試圖做的是在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:模板已經定義。 –