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
};