The unique pointer is a unique-ownership handle to an **object** in memory, and the object cannot be relocated in memory (if it were then that would be a different object - that's how c++ works)
The idea that relocation would imply a different object is more of a conceptual perspective than a strict language rule. In practice, the owned object typically won't be relocated, but that is not a requirement enforced by the unique_ptr itself