// { dg-do assemble } template <class T1,class T2> struct X { T1 a; struct Y { T2 x; Y (T2 _x) { x=_x; } }; }; template <class T1> struct X<T1,int> { T1 a; struct Y { int x; Y (int _x) { x=_x; } }; }; template <> struct X<int,int> { int a; struct Y { int x; Y (int _x) { x=_x; } }; }; void f () { X<char,char> t1; X<char,int> t2; X<int,int> t3; }