1159979Sglebius// { dg-do assemble  }
2159979Sglebius
3159979Sglebiustemplate <int I>
4159979Sglebiusstruct A {
5159979Sglebius};
6159979Sglebius
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