Rozważmy następujący kod:Nie mogę uzyskać dostępu do wskaźnika do członka. Czemu?
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
Dlaczego kompilator wygeneruje błąd? (VS2008)
New
Pisałem ten błąd do connect.microsoft.com.
Co kompilatora używasz? Nie ma błędów w g ++ 4.3.3. – sth
Jaki jest błąd zwrócony przez kompilator? – luc
Nie mogę zrozumieć deklaracji szablonu "Y". Parametry szablonu to typy lub wartości integralne. "TF :: * m" nie jest typem, za pomocą którego można parametryzować szablon ... Podczas pisania "Y", ostatni parametr nie jest typem, a nie wartość integralna. Jest wskaźnikiem do członka. Tak wiec, wierzę, to musi zostać odrzucone ... –
SadSido