A reference conversion can be performed wherever a reference initialization
occurs, including reference initialization done in argument passing and
function return values. A reference to a class can be converted to a
reference to an accessible base class of that class as long as the conversion
is not ambiguous. The result of the conversion is a reference to the
base class subobject of the derived class object.
Reference conversion is allowed if the corresponding pointer conversion is allowed.
Related References