Condividi tramite


Errore del compilatore C2299

'function': modifica del comportamento: una specializzazione esplicita non può essere un costruttore di copia o un operatore di assegnazione di copia

Osservazioni:

Questo errore può essere generato anche in seguito al lavoro di conformità del compilatore eseguito per Visual Studio 2005. Le versioni precedenti di Visual C++ consentivano specializzazioni esplicite per un costruttore di copia o un operatore di assegnazione di copia.

Per risolvere C2299, non rendere il costruttore di copia o l'operatore di assegnazione un modello di funzione. Impostarle come funzioni non modello che accettano un tipo di classe. Qualsiasi codice che chiama il costruttore di copia o l'operatore di assegnazione specificando in modo esplicito gli argomenti del modello deve rimuovere gli argomenti del modello.

Esempio

L'esempio seguente genera l'errore C2299:

// C2299.cpp
// compile with: /c
class C {
   template <class T>
   C (T t);

   template <> C (const C&);   // C2299
   C (const C&);   // OK
};