Reset this object to have the same pointer as the specified other object, and, if 0 != other->pointer(), the same deleter as other, then put other into an unset state. This method has no effect on the previously managed object (if any). The behavior is undefined unless this != other.