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.
In copy-list-initialization, if an explicit constructor is
chosen, the initialization is ill-formed.