Partilhar via


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) {}
};