Скажите, пожалуйста, в каком состоянии находятся объекты стандартной библиотеки после перемещения? Можно ли продолжать их использовать?
Например, можно ли делать так:
std::unique_ptr<Object> object_1 = std::make_unique<Object>();
std::unique_ptr<Object> object_2 = std::move(object_1);
object_1 = std::make_unique<ConcreteObject>();
И так:
std::vector<int> v_1 {1, 2};
std::vector<int> v_2 = std::move(v_1);
v_1.push_back(1);
И то и другое можно.
Смотрите документацию на каждый конкретный класс:
unique_ptr:
(5) unique_ptr( unique_ptr&& u ) noexcept; ... stores the null pointer in u.
vector:
(7) vector( vector&& other ) noexcept; ... After the move, other is guaranteed to be empty().
Сборка персонального компьютера от Artline: умный выбор для современных пользователей