История изменений
Исправление khrundel, (текущая версия) :
Кстати, а каково состояние перемещённого объекта?
Где? В расте это ошибка компиляции. В рантайме перемещение = memcpy, но так как компилятор знает что перемещено, а что нет, проблем с двойным деструктором нет.
В плюсах перемещения вообще нет, есть рвалуе ссылка и делай с ней что хочешь. И уже автор типа решает, или он при приёме обменивает контент, или зануляет указатель, или просто флажок устанавливает, чтоб впоследствии эксепшен кидать.
То есть, единственное, чем плох мув из цпп - это отсутствие требования про диагностику, так?
Я как минимум 2 проблемы описал: нет диагностики и необходимость перемещать/форвардить вручную.
Исправление khrundel, :
Кстати, а каково состояние перемещённого объекта?
Где? В расте это ошибка компиляции. В рантайме перемещение = memcpy, но так как компилятор знает что перемещено, а что нет, проблем с двойным деструктором нет.
В плюсах перемещения вообще нет, есть рвалуе ссылка и делай с ней что хочешь. И уже автор типа решает, или он при приёме обменивает контент, или зануляет указатель, или просто флажок устанавливает, чтоб впоследствии эксепшен кидать.
Исходная версия khrundel, :
Кстати, а каково состояние перемещённого объекта? Где? В расте это ошибка компиляции. В рантайме перемещение = memcpy, но так как компилятор знает что перемещено, а что нет, проблем с двойным деструктором нет.
В плюсах перемещения вообще нет, есть рвалуе ссылка и делай с ней что хочешь. И уже автор типа решает, или он при приёме обменивает контент, или зануляет указатель, или просто флажок устанавливает, чтоб впоследствии эксепшен кидать.