1// { dg-do assemble } 2 3template <int I> 4struct A { 5}; 6 7template <int I, int J> 8struct B { 9 operator A<3> (); 10 operator B<3, 7> (); 11}; 12 13 14template <int I, int J> 15void f(B<I, J>); 16 17template <int I> 18void f(A<I>) 19{ 20} 21 22int main() 23{ 24 // Deduction fails with the first `f'. Since `3' is explicitly 25 // specified, we don't try any deduction with the second `f'. So, 26 // we call the second `f'. 27 f<3>(B<2, 7>()); 28} 29