// { dg-do assemble }
template <class T>
struct S1
{
template <class U>
struct S2 {};
template <class X, class Y, class Z>
void f(X, Y, Z)
{
S2<Z> s2z;
}
template <class X, class Z>
void g(X, Z)
{
S2<Z> s2z;
}
};
void h()
{
S1<int> si;
si.g(3, 4);
}