If
T1 or
T2 is a class type and
T1 is not reference-related to
T2,
user-defined conversions are considered
using the rules for copy-initialization of an object of type
“
cv1 T1” by
user-defined conversion (
[dcl.init],
[over.match.copy],
[over.match.conv]);
the program is ill-formed if the corresponding non-reference
copy-initialization would be ill-formed
. The result of the call to the
conversion function, as described for the non-reference
copy-initialization, is then used to direct-initialize the reference
.