1// { dg-do assemble  }
2
3template <class T> struct S
4{
5  template <class U> struct I
6  {
7  };
8
9  S();
10  S(S& s);
11  S(I<T>);
12
13  template <class U> operator I<U>();
14};
15
16S<int> f();
17void g(S<int>);
18
19void h()
20{
21  g(f());
22}
23