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 subclause
or when forming a list-initialization sequence according to
[over.ics.list],
overload resolution selects the constructor in two phases:
If the initializer list is not empty or
T has no default constructor,
overload resolution is first performed
where 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
.Otherwise, or if no viable initializer-list constructor is found,
overload resolution is
performed again, where the candidate functions are all the constructors of
the class
T and
the argument list consists of the elements of the initializer list
.