https://gcc.gnu.org/bugzilla/show_bug.cgi?id=76262

TC <rs2740 at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rs2740 at gmail dot com

--- Comment #1 from TC <rs2740 at gmail dot com> ---
Post-DR2137, [dcl.init.list]/3.1 no longer applies to non-aggregates. Instead,
[dcl.init.list]/3.6 applies:

> Otherwise, if T is a class type, constructors are considered.
> The applicable constructors are enumerated and the best one
> is chosen through overload resolution ([over.match],
> [over.match.list]).

And [over.match.list] makes clear that initializer-list constructors are
preferred if at all viable:

> When objects of non-aggregate class type T are list-initialized
> such that [dcl.init.list] specifies that overload resolution
> is performed according to the rules in this section, overload
> resolution selects the constructor in two phases:
>  - Initially, the candidate functions are the initializer-list 
>    constructors ([dcl.init.list]) of the class T and the argument
>    list consists of the initializer list as a single argument.

[over.ics.rank] is irrelevant because the non-initializer-list constructors are
not even candidates.

Reply via email to