Udostępnij przez


Błąd kompilatora C2299

"function": zmiana zachowania: jawna specjalizacja nie może być konstruktorem kopii ani operatorem przypisania kopiowania

Uwagi

Ten błąd można również wygenerować w wyniku pracy kompilatora, która została wykonana dla programu Visual Studio 2005. Poprzednie wersje języka Visual C++ zezwalały na jawne specjalizacje konstruktora kopiowania lub operatora przypisania kopiowania.

Aby rozwiązać problem C2299, nie należy tworzyć konstruktora kopii ani operatora przypisania szablonu funkcji. Ustaw je na funkcje inne niż szablony, które przyjmują typ klasy. Każdy kod, który wywołuje konstruktor kopiujący lub operator przypisania, jawnie określając argumenty szablonu, musi usunąć argumenty szablonu.

Przykład

Poniższy przykład generuje kod C2299:

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

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