1// { dg-do assemble  }
2
3template <class T>
4class S2
5{
6public:
7  static void f();
8};
9
10
11template <class U>
12class S1
13{
14  template <class T>
15  friend class S2;
16
17  static int i;
18};
19
20
21template <class T>
22void S2<T>::f()
23{
24  S1<T>::i = 3;
25}
26
27void g()
28{
29  S2<double>::f();
30  S2<char>::f();
31}
32