Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
Fehlermeldung
'Funktion': Kann nicht explizit spezialisiert werden
'function' : cannot be explicitly specialized
Der Compiler hat festgestellt, das zweimal versucht wurde, dieselbe Funktion explizit zu spezialisieren.
Im folgenden Beispiel wird C2910 generiert:
// 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 kann auch beim Versuch ausgegeben werden, einen Nicht-Vorlagenmember explizit zu spezialisieren. Folglich können ausschließlich Funktionsvorlagen explizit spezialisiert werden.
Im folgenden Beispiel wird C2910 generiert:
// 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){}
Dieser Fehler kann auch aufgrund einer Verbesserung der Compilerkonformität in Visual Studio .NET 2003 ausgegeben werden:
In Code, der sowohl in der Visual Studio .NET 2003-Version als auch in der Visual Studio .NET-Version von Visual C++ gültig sein soll, entfernen Sie template <>.
Weitere Informationen finden Sie unter Übersicht über die wichtigsten Änderungen bei der Kompilierzeit.
Im folgenden Beispiel wird C2910 generiert:
// 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