型宣言は、グローバル、名前空間、またはクラス スコープのみで許可されています
ジェネリック クラスまたはテンプレート クラスをグローバルまたは名前空間スコープの外部で宣言することはできません。 ジェネリック宣言またはテンプレート宣言をインクルード ファイルで行う場合は、インクルード ファイルがグローバル スコープにあることを確認してください。
次の例では 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
}