23 General utilities library [utilities]
unique_ptr& operator=(unique_ptr&& u) noexcept;
Requires: If
D is not a reference type,
D shall satisfy the
requirements of
MoveAssignable (Table
25) and assignment
of the deleter from an rvalue of type
D shall not throw an exception
. Otherwise,
D is a reference type;
remove_reference_t<D> shall satisfy the
CopyAssignable
requirements and assignment of the deleter from an
lvalue of type
D shall not throw an exception
.Effects:
Transfers ownership from
u to
*this as if by calling
reset(u.release()) followed by
get_deleter() = std::forward<D>(u.get_deleter()). template <class U, class E> unique_ptr& operator=(unique_ptr<U, E>&& u) noexcept;
Requires: If
E is not a reference type, assignment of the deleter from
an rvalue of type
E shall be well-formed and shall not throw an exception
. Otherwise,
E is a reference type and assignment of the deleter from an lvalue
of type
E shall be well-formed and shall not throw an exception
.Remarks: This operator shall not participate in overload resolution unless:
unique_ptr<U, E>::pointer is implicitly convertible to pointer, and
U is not an array type, and
is_assignable_v<D&, E&&> is
true.
Effects: Transfers ownership from
u to
*this as if by calling
reset(u.release()) followed by
get_deleter() = std::forward<E>(u.get_deleter()). unique_ptr& operator=(nullptr_t) noexcept;
Effects: As if by
reset(). Postconditions: get() == nullptr.