コンパイラ エラー C2974
型引数 'number' は無効です。型が必要です
ジェネリック引数またはテンプレート引数が、ジェネリック宣言またはテンプレート宣言と一致しません。 型は、角かっこ内にある必要があります。 ジェネリックまたはテンプレートの定義を調べて正しい型が指定されていることをご確認ください。
次の例では C2974 が生成されます。
// C2974.cpp
// C2974 expected
template <class T>
struct TC {};
template <typename T>
void tf(T){}
int main() {
// Delete the following 2 lines to resolve
TC<1>* tc;
tf<"abc">("abc");
TC<int>* tc;
tf<const char *>("abc");
}
ジェネリックを使用する場合も C2974 が発生する場合があります。
// C2974b.cpp
// compile with: /clr
// C2974 expected
using namespace System;
generic <class T>
ref struct GCtype {};
generic <typename T>
void gf(T){}
int main() {
// Delete the following 2 lines to resolve
GCtype<"a">^ gc;
gf<"a">("abc");
// OK
GCtype<int>^ gc;
gf<String ^>("abc");
}