// { dg-do compile } // PR c++/5387 // Enforcing access of typename type. template struct A { typename T::X x; // { dg-error "this context" } }; template struct A2 { int f() { return T::i; } // { dg-error "this context" } }; class B { typedef int X; // { dg-message "private" } static int i; // { dg-message "private" } }; int main() { A ab; // { dg-message "required" } A2 a2b; a2b.f(); // { dg-message "required" } }