// { dg-do assemble } template <class T> struct S1 { template <class U> struct S2 { S2(U); void g() { S2<U> s2u (u); } U& u; }; template <class U> void f(U u) { S2<U> s2u(u); s2u.g(); } }; void g() { S1<int> s1; s1.f(3.0); }