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()16 int main()
17 {
18   A<B> ab;				// { dg-message "required" }
19   ab.f();				// { dg-message "required" }
20 }
21