Sdílet prostřednictvím


Chyba kompilátoru C2299

'function': behavior change: explicitní specializace nemůže být konstruktor kopírování nebo operátor přiřazení kopírování

Poznámky

Tuto chybu lze také vygenerovat v důsledku práce kompilátoru, která byla provedena pro Visual Studio 2005. Předchozí verze jazyka Visual C++ umožňovaly explicitní specializace pro konstruktor kopírování nebo operátor přiřazení kopírování.

Pokud chcete vyřešit C2299, nevytvávejte konstruktor kopírování ani operátor přiřazení jako šablonu funkce. Nastavte je jako neschybné funkce, které přebírají typ třídy. Jakýkoli kód, který volá konstruktor kopírování nebo operátor přiřazení explicitním zadáním argumentů šablony, musí odebrat argumenty šablony.

Příklad

Následující příklad generuje C2299:

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

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