E2472 インスタンス化によってメンバー関数を宣言できない (C++)
テンプレートクラス内の宣言がテンプレートパラメータに依存する型を通じて関数型を受け取るため,関数宣言子の正しい構文を使って関数型を受け取らない宣言になる場合,このプログラムの形式は不正です。例を示します。
template<class T>
struct A {
static T t;
};
typedef int function();
A<function> a;// エラー: A<function>::t が
// 静的メンバー関数として宣言されます
別の例を示します。
次の例では,テンプレートメンバー 'a' は 'T' 型です。このテンプレートが関数型として T でインスタンス化されると,'a' はメンバー関数であることになります。これは許可されず,このエラーメッセージが表示されます。
template<T& x> class foo { T a; }
int func(int);
template class foo<func>;