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.
'Funktion': kann nicht explizit spezialisiert sein
Der Compiler hat einen Versuch erkannt, eine Funktion zweimal 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 generiert werden, wenn Sie versuchen, ein Nicht-Vorlagenmitglied explizit zu spezialisieren. Das heißt, Sie können nur explizit eine Funktionsvorlage spezialisieren.
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 wird auch als Ergebnis der Compilerkonformität generiert, die in Visual Studio .NET 2003:.
Für Code ist in visual Studio .NET 2003 und Visual Studio .NET-Versionen von Visual C++ gültig, entfernen template <>
Sie .
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