Sometimes you don't need shared ownership (shared_ptr), but you still need to be able to have weak pointers to an object. Now you can derive the object from base::enable_weak_from_this and use base::weak_unique_ptr<T> after that.