Derleyici Hatası C2910
'function' : açıkça özelleştirilebilir
Derleyici, bir işlevi iki kez açıkça özelleştirme girişimi algılamıştı.
Aşağıdaki örnek C2910 oluşturur:
// 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
Şablon olmayan bir üyeyi açıkça özelleştirmeye çalışırsanız C2910 da oluşturulabilir. Yani, yalnızca bir işlev şablonunu açıkça özelleştirebilirsiniz.
Aşağıdaki örnek C2910 oluşturur:
// 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){}
Bu hata, Visual Studio .NET 2003: içinde yapılan derleyici uyumluluğu çalışmasının sonucu olarak da oluşturulur.
Visual C++'ın Visual Studio .NET 2003 ve Visual Studio .NET sürümlerinde kod geçerli olacak için öğesini kaldırın template <>
.
Aşağıdaki örnek C2910 oluşturur:
// 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