Teilen über


Compilerfehler C2299

'Funktion': Verhaltensänderung: Eine explizite Spezialisierung kann kein Kopierkonstruktor oder Kopierzuordnungsoperator sein.

Hinweise

Dieser Fehler kann auch als Ergebnis der Compilerkonformität generiert werden, die für Visual Studio 2005 ausgeführt wurde. In früheren Versionen von Visual C++ wurden explizite Spezialisierungen für einen Kopierkonstruktor oder einen Kopierzuweisungsoperator zugelassen.

Um C2299 aufzulösen, erstellen Sie nicht den Kopierkonstruktor oder den Zuordnungsoperator als Funktionsvorlage. Machen Sie sie nicht vorlagenfremde Funktionen, die einen Klassentyp verwenden. Jeder Code, der den Kopierkonstruktor oder den Zuordnungsoperator aufruft, indem explizit die Vorlagenargumente angegeben werden, müssen die Vorlagenargumente entfernt werden.

Beispiel

Im folgenden Beispiel wird C2299 generiert:

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

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