This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 118e. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-11-05
There are overload tiebreakers that order reference/nonreference and base/derived conversions, but how they relate is not specified. For example:
struct A { A(); };
struct B : A {};
struct C : B {};
void f1(B&);
void f1(A);
void f2(B);
void f2(A&);
int main()
{
C v;
f1(v); // all compilers choose f1(B&)
f2(v); // all compilers choose f2(B)
}
The Standard does not appear to specify what happens in this case.