When the parameter type is not a reference, the implicit conversion
sequence models a copy-initialization of the parameter from the argument
expression
. The implicit conversion sequence is the one required to convert the
argument expression to a prvalue of the type of
the parameter
. [
Note 3:
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
. [
Example 2:
A parameter of type
A
can be initialized from an argument of type
const A. The implicit conversion sequence for that case is the identity sequence; it
contains no “conversion” from
const A
to
A. —
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
derived-to-base
conversion from the derived class to the base class
. [
Note 4:
There is no such standard conversion; this derived-to-base conversion exists
only in the description of implicit conversion sequences
. —
end note]