LINUX.ORG.RU

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

Исправление khrundel, (текущая версия) :

Кстати, а каково состояние перемещённого объекта?

Где? В расте это ошибка компиляции. В рантайме перемещение = memcpy, но так как компилятор знает что перемещено, а что нет, проблем с двойным деструктором нет.

В плюсах перемещения вообще нет, есть рвалуе ссылка и делай с ней что хочешь. И уже автор типа решает, или он при приёме обменивает контент, или зануляет указатель, или просто флажок устанавливает, чтоб впоследствии эксепшен кидать.

То есть, единственное, чем плох мув из цпп - это отсутствие требования про диагностику, так?

Я как минимум 2 проблемы описал: нет диагностики и необходимость перемещать/форвардить вручную.

Исправление khrundel, :

Кстати, а каково состояние перемещённого объекта?

Где? В расте это ошибка компиляции. В рантайме перемещение = memcpy, но так как компилятор знает что перемещено, а что нет, проблем с двойным деструктором нет.

В плюсах перемещения вообще нет, есть рвалуе ссылка и делай с ней что хочешь. И уже автор типа решает, или он при приёме обменивает контент, или зануляет указатель, или просто флажок устанавливает, чтоб впоследствии эксепшен кидать.

Исходная версия khrundel, :

Кстати, а каково состояние перемещённого объекта? Где? В расте это ошибка компиляции. В рантайме перемещение = memcpy, но так как компилятор знает что перемещено, а что нет, проблем с двойным деструктором нет.

В плюсах перемещения вообще нет, есть рвалуе ссылка и делай с ней что хочешь. И уже автор типа решает, или он при приёме обменивает контент, или зануляет указатель, или просто флажок устанавливает, чтоб впоследствии эксепшен кидать.