When the parameter type is not a reference, the implicit conversion
sequence models a copy-initialization of the parameter from the argument
The implicit conversion sequence is the one required to convert the
argument expression to a prvalue of the type of
When the parameter has a class type, this is a conceptual conversion
defined for the purposes of [over]
; the actual initialization is
defined in terms of constructors and is not a conversion.
— end note
Any difference in top-level cv-qualification is
subsumed by the initialization itself and does not constitute a conversion.
A parameter of type
can be initialized from an argument of type
The implicit conversion sequence for that case is the identity sequence; it
contains no “conversion” from
— end example
When the parameter has a class type and the argument expression has the
same type, the implicit conversion sequence is an identity conversion.
When the parameter has a class type and the argument expression has a
derived class type, the implicit conversion sequence is a
conversion from the derived class to the base class.
There is no such standard conversion; this derived-to-base conversion exists
only in the description of implicit conversion sequences.
— end note