[over.match.copy] (original) (raw)

When the type of the initializer expression is a class type “cv S”, the non-explicit conversion functions ofSand 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 withinSand yield a type whose cv-unqualified version is the same type asTor 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.