Ответ 1
При выборе инициализации ссылки, заданной ее инициализатором, сначала проверяется прямое связывание. [dcl.init.ref]/(5.1.2):
Если ссылка является ссылкой lvalue, а выражение инициализатора [...] имеет тип класса (т.е.
T2
- тип класса), гдеT1
не ссылается наT2
и может быть преобразуется в lvalue типа "cv3T3
", где "cv1T1
" является ссылочным-совместимым с "cv3T3
" (это преобразование выбирается путем перечисления применимых функций преобразования (13.3.1.6) и выбрав лучший из них с помощью разрешения перегрузки (13.3)), тогда ссылка привязана [...] к результату lvalue преобразования [...].
Формулировка, определяющая выбор кандидата для этого процесса (13.3.1.6, как упоминалось выше) исключает первую функцию преобразования:
Рассматриваются функции преобразования
S
и его базовые классы. Те неявные функции преобразования которые не скрыты внутриS
и выдают тип "lvalue reference to cv2T2
" (при инициализации ссылки на lvalue или ссылкой на функцию rvalue) [...], где "cv1T
" является ссылкой -совместимый (8.6.3) с "cv2T2
", - это функции-кандидаты. Для прямой инициализации [...].
Ясно, что это исключение специфично для семантики инициализации ссылок, поэтому первый случай еще неоднозначен.