blob: 34e4c758f4528e953a7c52dc8e27e9403fdd3698 [file] [log] [blame]
// { dg-do assemble }
template <int I>
struct A {
};
template <int I, int J>
struct B {
operator A<3> ();
operator B<3, 7> ();
};
template <int I, int J>
void f(B<I, J>);
template <int I>
void f(A<I>)
{
}
int main()
{
// Deduction fails with the first `f'. Since `3' is explicitly
// specified, we don't try any deduction with the second `f'. So,
// we call the second `f'.
f<3>(B<2, 7>());
}