1// { dg-do assemble  }
2// Origin: Mark Mitchell <mark@codesourcery.com>
3
4template <class T>
5class S {
6public:
7  template <class U>
8  class C {
9  public:
10    void f() { S::i = 3; }
11  };
12
13  template <class U>
14  friend class C;
15
16private:
17  static int i;
18};
19
20
21template void S<int>::C<double>::f();
22