Compiler Error C2955
'identifier' : use of class type requires type argument list
You cannot use a class template or class generic as an identifier without a template or generic argument list.
For more information, see Class Templates.
The following sample generates C2955:
// C2955.cpp
// compile with: /c
template<class T>
class X {};
X x; // C2955
X<int> x2; // OK
C2955 can also occur when attempting an out-of-line definition for a function declared in a class template:
// C2955_b.cpp
// compile with: /c
template <class T>
class CT {
public:
void CTFunc();
void CTFunc2();
};
void CT::CTFunc() {} // C2955
// OK
template <class T>
void CT<T>::CTFunc2() {}
C2955 can also occur when using generics:
// C2955_c.cpp
// compile with: /clr
generic <class T>
ref struct GC {
T t;
};
int main() {
GC^ g; // C2955
GC <int>^ g;
}