Partilhar via


Compilador erro C2299

Mensagem de erro

'função': alterar de comportamento: uma especialização explícita não pode ser um construtor de cópia ou operador de atribuição de cópia

Este erro também pode ser gerado sistema autônomo resultado do compilador conformidade trabalho foi realizado em Visual C++ 2005: versões anteriores do Visual C++ permitiam especializações em explícitas para um construtor de cópia ou um operador de atribuição de cópia.

Para resolver C2299, não faça o construtor de cópia ou operador de atribuição de uma função do modelo, mas em vez disso, uma função do modelo não leva um tipo de classe.Qualquer código que chama o construtor de cópia ou operador de atribuição, explicitamente especificando os argumentos de modelo precisa remover os argumentos de modelo.

Consulte Quebrar alterações no compilador de 2005 Visual C++ para obter mais informações.

O exemplo a seguir gera C2299:

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

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