は、次のコードを考えてみましょう:メンバーへのポインタにアクセスできません。どうして?
template<class T, class F> struct X {};
template<class T, class F, T F::* m> struct Y {};
struct Foo {
int member;
typedef X<int, Foo> x_type; // works well
typedef Y<int, Foo, &Foo::member> y_type; // ERROR
};
typedef Y<int, Foo, &Foo::member> y_type2; // OK
なぜコンパイラはエラーを生成するのでしょうか? (VS2008)
新
私はconnect.microsoft.comにこのバグを掲載しています。
のですか? g ++ 4.3.3ではエラーはありません。 – sth
コンパイラから返されるエラーは何ですか? – luc
私は "Y"テンプレートの宣言を理解できません。テンプレートパラメータは、型または整数値のいずれかです。 "TF :: * m"は、テンプレートをパラメータ化できる型ではありません... "Y"と書くと、最後のパラメータは型ではなく型積分値。メンバーへのポインタです。したがって、私はそれを拒絶する必要があります... –
SadSido