Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
Messaggio di errore
specializzazione esplicita. 'dichiarazione' non è una specializzazione di template di funzione
explicit specialization; 'declaration' is not a specialization of a function template
Non è possibile specializzare una funzione non modello.
Nell'esempio seguente viene generato l'errore C2912:
// C2912.cpp
// compile with: /c
void f(char);
template<> void f(char); // C2912
template<class T> void f(T); // OK
Questo errore può essere generato come risultato delle operazioni di conformità eseguite dal compilatore in Visual Studio .NET 2003. Per ogni specializzazione esplicita è necessario scegliere i parametri che corrispondono a quelli del modello primario.
Per ulteriori informazioni, vedere Riepilogo delle ultime modifiche in fase di compilazione.
// 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) {}
};