The next pointer we will see is the unique_ptr pointer. It is fast, efficient, and a near drop-in replacement for raw or naked pointers. It provides exclusive ownership semantics, which exclusively owns the object that it points to. By its exclusiveness, it can destroy the object when its destructor is called if it has a non-null pointer. It also cannot be copied due to its exclusiveness. It has no copy constructor and copy assignment. Although it cannot be copied, it can be moved since it provides a move constructor and a move assignment.
These are the methods we can use to construct unique_ptr:
auto up1 = unique_ptr<int>{}; auto up2 = unique_ptr<int>{ nullptr }; auto up3 = unique_ptr<int>{ new int ...