LINUX.ORG.RU

История изменений

Исправление 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++ это не так. Тип может быть любым, для которого компилятор найдёт преобразование.