1// { dg-do assemble  }
2
3template <class T>
4struct S1
5{
6  template <class U>
7  struct S2
8  {
9    S2(U);
10
11    void g()
12      {
13	S2<U> s2u (u);
14      }
15
16    U& u;
17  };
18
19  template <class U>
20  void f(U u)
21    {
22      S2<U> s2u(u);
23      s2u.g();
24    }
25};
26
27void g()
28{
29  S1<int> s1;
30  s1.f(3.0);
31}
32
33