Considere el siguiente código:No puedo obtener acceso al puntero al miembro. ¿Por qué?
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
¿Por qué generan error del compilador? (VS2008)
Nueva
he publicado este error a connect.microsoft.com.
Qué compilador está usando? No hay errores con g ++ 4.3.3. – sth
¿Cuál es el error devuelto por el compilador? – luc
No puedo entender la declaración de la plantilla "Y". Los parámetros de la plantilla son tipos o valores integrales. "TF :: * m" no es un tipo, con el que puede parametrizar su plantilla ... Cuando escribe "Y", el último parámetro no es un tipo y no un valor integral. Es un puntero al miembro. Entonces, creo, debe ser rechazado ... –
SadSido