Otherwise (i.e., for the remaining copy-initialization cases),
user-defined conversions that can convert from the
source type to the destination type or (when a conversion function
is used) to a derived class thereof are enumerated as described in
[over.match.copy],
and the best one is chosen through overload resolution (
[over.match])
. If the conversion cannot be done or
is ambiguous, the initialization is ill-formed
. The function
selected is called with the initializer expression as its
argument; if the function is a constructor, the call is a prvalue
of the cv-unqualified version of the
destination type whose result object is initialized by the constructor
. The call is used
to direct-initialize, according to the rules above, the object
that is the destination of the copy-initialization
.