История изменений
Исправление monk, (текущая версия) :
Здесь нет имплицитного вызова. Здесь
fun(&b) = fun(b.deref())
Выше указано, что deref всегда возвращает &A. fun хочет именно &A. Всё сходится.
Как я писал выше, глядя на
fn fun(a: &A) -> () { ... }
...
fun(&b)
достоверно можно утверждать, что &b имеет тип &A. Для C++ это не так. Тип может быть любым, для которого компилятор найдёт преобразование.
Исходная версия monk, :
Здесь нет имплицитного вызова. Здесь
fun(&b) = fun(b.deref())
Выше указано, что deref всегда возвращает &A. fun хочет именно &A. Всё сходится.
Как я писал выше, глядя на
fn fun(a: &A) -> () { ... }
...
fun(&b)
достоверно утверждать, что &b имеет тип &A. Для C++ это не так. Тип может быть любым, для которого компилятор найдёт преобразование.