Что нужно дописать, чтобы при вызове конструктора перемещения член класса действительно "переместился"?



Нужно дописать std::move в списке инициализации перемещающего конструктора:

A(A&& oth) : str(std::move(oth.str)){ }



Но это гарантирует "перемещение" только в том случае, если у этого объекта, в свою очередь, есть перемещающий конструктор (в данном случае, у std::string он есть).