Compartir a través de


Error del compilador C2299

'function': cambio de comportamiento: una especialización explícita no puede ser un constructor de copia o un operador de asignación de copia

Comentarios

Este error también se puede generar como resultado del trabajo de conformidad del compilador que se realizó para Visual Studio 2005. Las versiones anteriores de Visual C++ permitían especializaciones explícitas para un constructor de copia o un operador de asignación de copia.

Para resolver C2299, no convierta el constructor de copia o el operador de asignación en una plantilla de función. Haga que las funciones que no sean de plantilla tomen un tipo de clase. Cualquier código que llame al constructor de copia o al operador de asignación especificando explícitamente los argumentos de plantilla debe quitar los argumentos de plantilla.

Ejemplo

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