В C++11 мы можем передать право собственности на объект на другой unique_ptr, используя std::move(). После передачи прав собственности смарт-указатель, который уступил собственности, становится null и get() возвращает nullptr.
std::unique_ptr<int> p1(new int(42));
std::unique_ptr<int> p2 = std::move(p1); // Transfer ownership
Каковы ситуации, когда это будет полезно, поскольку оно переносит право собственности на другой unique_ptr?