Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
'functie' : kan niet expliciet gespecialiseerd zijn
Opmerkingen
De compiler heeft een poging gedetecteerd om een functie twee keer expliciet te specialiseren.
Voorbeelden
In het volgende voorbeeld wordt C2910 gegenereerd:
// 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 kan ook worden gegenereerd als u een niet-sjabloonlid expliciet wilt specialiseren. Dat wil gezegd, u kunt alleen expliciet een functiesjabloon specialiseren.
In het volgende voorbeeld wordt C2910 gegenereerd:
// 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){}
Deze fout wordt ook gegenereerd als gevolg van compilerconformance-werk dat is uitgevoerd in Visual Studio .NET 2003.
Opdat de code geldig is in de versies Visual Studio .NET 2003 en Visual Studio .NET van Visual C++, verwijder template <>.
In het volgende voorbeeld wordt C2910 gegenereerd:
// 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