Смотрю, на этот вопрос все еще нет ответов, поэтому добавлю немного отсебятины.
Что произойдет после данной вышеописанной операцией с членом size и указателем старого объекта (other)? Они останутся в памяти вместе с объектом? Или при нулевом значение они занимают незначительную область памяти?
Давай обратимся к
C++ Core Guidelines за разъяснениями.
Советую, кстати, детально изучить от корки до корки.
https://github.com/isocpp/CppCoreGuidelines/blob/m...
В результате перемещения источник должен оставаться в состоянии, когда им можно дальше пользоваться.
Наш объект класса SomeClass может быть выделен как на стеке, так и в куче. Когда мы его перемещаем, мы перемещаем только внутренности объекта, а не сам объект. После перемещения объект все так же остается жить и должен иметь возможность правильно удалиться как со стека, так и из кучи. Ответственность за это полностью лежит на разработчике класса. Но удаляет объект не семантика перемещения и, тем более, не конструктор перемещения. функция
std::move является всего лишь декоратором, который меняет тип объекта с
lvalue на rvalue. Она не занимается удалением или очисткой объекта.
После перемещения объект можно дальше использовать. Если следовать гайдлайну, то после перемещения объект должен стать таким, как будто он был только что сконструирован стандартным конструктором. Объект можно снова заполнить и снова переместить. И так - сколько угодно раз.
А сам объект всегда занимает один и тот же объем памяти, определенный его классом.
Так же по теме:
https://github.com/isocpp/CppCoreGuidelines/blob/m...
https://github.com/isocpp/CppCoreGuidelines/blob/m...