Compilador erro C2912
Mensagem de erro
especialização explícita; 'declaração' não é uma especialização de um modelo de função
Não é possível specialize uma função do modelo não.
O exemplo a seguir gera C2912:
// C2912.cpp
// compile with: /c
void f(char);
template<> void f(char); // C2912
template<class T> void f(T); // OK
Este erro também será gerado sistema autônomo resultado do trabalho de conformidade de compilador que foi concluído no Visual Studio .NET 2003: para cada especialização explícita, você deve escolher os parâmetros de especialização explícito, de modo que eles correspondem aos parâmetros do modelo principal.
See Resumo das alterações de quebras de time de compilar para obter mais informações.
// C2912b.cpp
class CF {
public:
template <class A> CF(const A& a) {} // primary template
// attempted explicit specialization
template <> CF(const char* p) {} // C2912
// try the following line instead
// template <> CF(const char& p) {}
};