Especialização em modelo de um único método da classe modelo com vários parâmetros de modelo
Eu estou basicamente tentando fazer o que foi discutido emEspecialização em modelo de um único método de uma classe modelo exceto que o meu TClass tem vários parâmetros de modelo como este:
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
}
Isso funciona até agora, mas como defino uma implementação especializada para um parâmetro de modelo? Eu tentei adicionar isto:
template < class TYPE >
void TClass<int, TYPE>::doSomething(int * v)
{
// do something if KEY is int
}
mas o compilador reclama sobre "incapaz de corresponder a definição de função a uma declaração existente" (VC2010) para esse método / função.
Como um sidenote: Se eu especializar ambos os parâmetros do modelo ao mesmo tempo, ele funciona:
template < >
void TClass<int, char>::doSomething(int * v)
{
// do something if KEY is int and TYPE is char
}
mas não é isso que eu quero fazer.
Alguma sugestão?