Megosztás a következőn keresztül:


C2910 fordítási hiba

"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