This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 117a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2025-04-13


2110. Overload resolution for base class conversion and reference/non-reference

Section: 12.2.4.3  [over.ics.rank]     Status: drafting     Submitter: Alexander Kulpin     Date: 2015-03-27

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.



close