Sdílet prostřednictvím


Chyba kompilátoru C2910

'function' : nesmí být explicitně specializovaná.

Poznámky

Kompilátor zjistil pokus o explicitní specializaci funkce dvakrát.

Examples

Následující příklad generuje C2910:

// 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 lze také vygenerovat, pokud se pokusíte explicitně specializovat člena, který není šablonou. To znamená, že se můžete explicitně specializovat pouze na šablonu funkce.

Následující příklad generuje C2910:

// 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){}

Tato chyba se také vygeneruje v důsledku práce kompilátoru, která byla provedena v sadě Visual Studio .NET 2003:.

Kód bude platný ve verzích Visual Studio .NET 2003 a Visual Studio .NET sady Visual C++, odeberte template <>.

Následující příklad generuje C2910:

// 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