Compiler Error C2951
type declarations are only permitted at global, namespace, or class scope
You cannot declare a generic or template class outside global or namespace scope. If you make your generic or template declarations in an include file, make sure the include file is at global scope.
The following sample generates C2951:
// C2951.cpp
template <class T>
class A {};
int main() {
template <class T> // C2951
class B {};
}
C2951 can also occur when using generics:
// C2951b.cpp
// compile with: /clr /c
// OK
generic <class T>
ref class GC { };
int main() {
generic <class T> ref class GC2 {}; // C2951
}
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for