Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
"függvény" : nem lehet explicit módon specializált
Megjegyzések
A fordító kétszer is megkísérelt explicit módon specializálni egy függvényt.
Példák
Az alábbi példa c2910-et hoz létre:
// 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
A C2910 akkor is létrehozható, ha egy nem sablon tagot próbál explicit módon specializálni. Vagyis csak explicit módon specializálhat egy függvénysablont.
Az alábbi példa c2910-et hoz létre:
// 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){}
Ez a hiba a Visual Studio .NET 2003:-ban végzett fordítói megfelelőségi munka eredményeként is létrejön.
Ahhoz, hogy a kód érvényessé váljon a Visual Studio .NET 2003 és a Visual Studio .NET Visual C++ verzióiban, távolítsa el a template <> elemet.
Az alábbi példa c2910-et hoz létre:
// 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