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, 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.
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.
If the initializer list has no elements and T has a default constructor,
the first phase is omitted.
In copy-list-initialization, if an explicit constructor is
chosen, the initialization is ill-formed.