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