pointer release() noexcept;
void reset(pointer p = pointer()) noexcept;
Requires: The expression get_Βdeleter()(get()) shall be well formed, shall have well-defined behavior, and shall not throw exceptions.
Effects: Assigns p to the stored pointer, and then if and only if the old value of the stored pointer, old_Βp, was not equal to nullptr, calls get_Βdeleter()(old_Βp). [βNote: The order of these operations is significant because the call to get_Βdeleter() may destroy *this. βββend noteβ]
Postconditions: get() == p. [βNote: The postcondition does not hold if the call to get_Βdeleter() destroys *this since this->get() is no longer a valid expression. βββend noteβ]
void swap(unique_ptr& u) noexcept;