1 // { dg-do compile } 2 3 // PR c++/5387 4 // Enforcing access of typename type. 5 6 template <class T> struct A { 7 typename T::X x; // { dg-error "this context" } fA8 int f() { return T::i; } // { dg-error "this context" } 9 }; 10 11 class B { 12 typedef int X; // { dg-message "private" } 13 static int i; // { dg-message "private" } 14 }; 15 main()16int main() 17 { 18 A<B> ab; // { dg-message "required" } 19 ab.f(); // { dg-message "required" } 20 } 21