1// { dg-do assemble  }
2// Origin: Mark Mitchell <mark@codesourcery.com>
3
4template <int T>
5struct S {
6  struct X {};
7  struct Y {};
8
9  template <int U>
10  friend struct S<U>::X;
11
12  template <int U>
13  friend typename S<U>::Y; // { dg-error "" } typename as friend
14};
15
16struct T {
17  template <int T>
18  friend struct S<T>::X;
19};
20
21struct U {
22  template <int T>
23  friend typename S<T>::X; // { dg-error "" } typename as friend
24};
25