Разбираем, зачем в C++ нужна move‑семантика, как работает перенос владения ресурсом (а не копирование данных), что означает rvalue‑ссылка
T&&, почему
std::move «ничего не двигает», а лишь разрешает перемещение, и как правильно писать
move‑ctor и
move‑assign для типа, вручную владеющего памятью (на примере
Buffer с
new
[]/
delete
[]). В конце — контракт moved‑from состояния, сравнение copy vs move и типичные ошибки (утечки, double‑free, использование объекта после перемещения).