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
'funzione': impossibile eseguire la specializzazione esplicita
'function' : cannot be explicitly specialized
È stato rilevato un tentativo di specializzare esplicitamente due volte una funzione.
Nell'esempio seguente viene generato l'errore C2910:
// C2910.cpp
// compile with: /c
template <class T>
struct S;
template <> struct S<int> { void f() {} };
template <> void S<int>::f() {} // C2910 delete this specialization
L'errore C2910 può anche venire generato se si tenta di specializzare esplicitamente un membro non template. È possibile specializzare esplicitamente solo un template di funzione.
Nell'esempio seguente viene generato l'errore C2910:
// C2910b.cpp
// compile with: /c
template <class T> struct A {
A(T* p);
};
template <> struct A<void> {
A(void* p);
};
template <class T>
inline A<T>::A(T* p) {}
template <> A<void>::A(void* p){} // C2910
// try the following line instead
// A<void>::A(void* p){}
Questo errore viene anche generato come risultato delle operazioni di conformità eseguite per Visual Studio .NET 2003.
Affinché il codice sia valido in entrambe le versioni Visual Studio .NET 2003 e Visual Studio .NET di Visual C++, rimuovere template <>.
Per ulteriori informazioni, vedere Riepilogo delle ultime modifiche in fase di compilazione.
Nell'esempio seguente viene generato l'errore C2910:
// C2910c.cpp
// compile with: /c
template <class T> class A {
void f();
};
template <> class A<int> {
void f();
};
template <> void A<int>::f() {} // C2910
// try the following line instead
// void A<int>::f(){} // OK