Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
'função' : não pode ser explicitamente especializada
Observações
O compilador detetou uma tentativa de especializar explicitamente uma função duas vezes.
Examples
O exemplo a seguir gera C2910:
// C2910.cpp
// compile with: /c
template <class T>
struct S;
template <> struct S<int> { void f() {} };
template <> void S<int>::f() {} // C2910 delete this specialization
C2910 também pode ser gerado se tentar explicitamente especializar um membro não-modelo. Ou seja, você só pode especializar explicitamente um modelo de função.
O exemplo a seguir gera C2910:
// C2910b.cpp
// compile with: /c
template <class T> struct A {
A(T* p);
};
template <> struct A<void> {
A(void* p);
};
template <class T>
inline A<T>::A(T* p) {}
template <> A<void>::A(void* p){} // C2910
// try the following line instead
// A<void>::A(void* p){}
Este erro também será gerado como resultado do trabalho de conformidade do compilador que foi feito no Visual Studio .NET 2003:.
Para que o seu código seja válido nas versões do Visual Studio .NET 2003 e do Visual Studio .NET do Visual C++, remova template <>.
O exemplo a seguir gera C2910:
// C2910c.cpp
// compile with: /c
template <class T> class A {
void f();
};
template <> class A<int> {
void f();
};
template <> void A<int>::f() {} // C2910
// try the following line instead
// void A<int>::f(){} // OK