Поделиться через


Ошибка компилятора C2903

"идентификатор: символ не является ни шаблоном класса, ни шаблоном функции

Код пытается явно создать экземпляр объекта, который не является шаблоном.

В следующем примере возникает ошибка C2903:

// C2903.cpp
// compile with: /c
namespace N {
   template<class T> class X {};
   class Y {};
}
void g() {
   N::template Y y;   // C2903
   N::X<N::Y> y;   // OK
}

Ошибка C2903 также может возникнуть при использовании универсальных шаблонов:

// C2903b.cpp
// compile with: /clr /c
namespace N {
   class Y {};
   generic<class T> ref class Z {};
}

void f() {
   N::generic Y y;   // C2903
   N:: generic Z<int>^ z;   // OK
}