Ошибка компилятора C2951
Объявления типов разрешены только в глобальной области, пространства имен или класса.
Нельзя объявить универсальный или шаблонный класс вне глобальной или области пространства имен. Если вы делаете универсальные или шаблонные объявления в файле включения, убедитесь, что файл включения находится в глобальной области.
Следующий пример приводит к возникновению ошибки C2951:
// C2951.cpp
template <class T>
class A {};
int main() {
template <class T> // C2951
class B {};
}
C2951 также может возникать при использовании универсальных шаблонов:
// C2951b.cpp
// compile with: /clr /c
// OK
generic <class T>
ref class GC { };
int main() {
generic <class T> ref class GC2 {}; // C2951
}