Рассмотрим:
class C {
private:
class T {int a, b;};
};
C::T *p;
Как и ожидалось, это приводит к ошибке компиляции, говорящей, что C :: T является приватным в контексте строки 6.
Теперь измените это на указатель на член:
class C {
private:
class T {int a, b;};
};
int C::T::*p;
На этот раз gcc версии 3.2.3 все еще подает такую же жалобу, но gcc версии 3.4.3 позволяет ей пройти. Какое поведение соответствует стандарту?