1 // { dg-do compile }
2 
3 // PR c++/3663
4 // Enforce access of nested type.
5 
6 template <typename A>
7 class S {
8   class T {};				// { dg-message "private" }
9 };
10 
11 template <typename A>
f(A)12 typename A::T* f (A) {			// { dg-error "this context" }
13   return 0;
14 }
15 
g()16 void g () {
17   f (S<int> ());			// { dg-message "required|no match" }
18 }
19