При перемещении std::string происходит перенос владения ресурсом (памятью) из исходного объекта в целевой. Вместо копирования содержимого строки (символов), копируется только указатель на буфер, его размер и емкость. Исходный объект при этом приводится в валидное, но неопределенное состояние (как правило, указатель становится нулевым, размер и емкость обнуляются), что предотвращает двойное освобождение памяти. Это существенно быстрее, чем полное копирование, особенно для длинных строк.
cpp
Перемещающий конструктор или оператор присваивания:
nullptr.Это реализуется благодаря семантике перемещения (rvalue-ссылки и специальные конструкторы/операторы).