Рассмотрим следующий код:Я не могу получить доступ к указателю на член. Зачем?
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