Разница между обычным присваиванием и присваиванием через std::move заключается в том, что при обычном присваивании происходит копирование данных, а при присваивании через std::move — перемещение ресурсов. 23
Обычное присваивание создаёт две копии данных, а присваивание через std::move позволяет одному объекту взять на себя ресурсы другого без дополнительных копий. 23 Исходный объект при этом остаётся в допустимом, но неопределённом состоянии. 3
Присваивание через std::move полезно, например, в контейнерах и в классах, владеющих ресурсами, так как позволяет отобрать владение ресурсами у временного объекта и избежать дорогих операций копирования и инициализации. 4