When the type of the initializer expression is a class type
“
cv S”,
the non-explicit conversion functions of
S
and its base classes are considered
. When initializing a temporary object (
[class.mem])
to be bound to the first parameter of a constructor
where the parameter is of type
“reference to
cv2 T”
and the constructor is
called with a single argument in the context of
direct-initialization of an object of type “
cv3 T”, explicit
conversion functions are also considered
. Those that are not hidden within
S
and yield a type whose cv-unqualified version is the same type as
T
or is a derived class thereof
are candidate functions
. A call to a conversion function returning “reference to
X”
is a glvalue of type
X, and such a conversion function is
therefore considered to yield
X for this process of selecting
candidate functions
.