Incorrect implication of logic ladder for conversion sequence tiebreakers
Section [over.ics.rank]
Richard Smith

Created on 2017-03-02.00:00:00 last changed 47 months ago


Date: 2017-03-02.00:00:00

The bulleted list of [over.ics.rank] paragraph 3 consists of a logic ladder of the form “A is better than B if [some predicate relating A to B], or, if not that, ...” For example, bullet 3.1 says,

  • List-initialization sequence L1 is a better conversion sequence than list-initialization sequence L2 if

    • L1 converts to std::initializer_list<X> for some X and L2 does not, or, if not that,

    • L1 converts to type “array of N1 T”, L2 converts to type “array of N2 T”, and N1 is smaller than N2 ,

The intent is not to fall into the array case if L2 converts to std::initializer_list<X> and L1 does not — i.e., the inverse predicate holds — but that intent is not well reflected in the actual wording.

Date User Action Args
2017-03-02 00:00:00admincreate