Compartir a través de


Error del compilador C2299

Actualización: noviembre 2007

Mensaje de error

'función' : cambio de comportamiento: una especialización explícita no puede ser un constructor de copias ni un operador de asignación de copia
'function' : behavior change: an explicit specialization can not be a copy constructor or copy assignment operator

Este error también puede producirse como resultado del trabajo de conformidad del compilador realizado para Visual C++ 2005: versiones anteriores de Visual C++ permitían la especialización explícita de un constructor de copias o de un operador de asignación de copia.

Para solucionar el error C2299, no cree una función de plantilla de un constructor de copias u operador de asignación de copia; haga una función que no sea de plantilla y que admita un tipo de clase. El código que llama al constructor de copias u operador de asignación especificando explícitamente los argumentos de plantilla debe quitar dichos argumentos.

Vea Cambios importantes en el compilador de Visual C++ 2005 para obtener más información.

El ejemplo siguiente genera el error C2299:

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

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