Scroll to navigation

std::experimental::unique_resource::operator=(3) C++ Standard Libary std::experimental::unique_resource::operator=(3)


std::experimental::unique_resource::operator= - std::experimental::unique_resource::operator=


unique_resource& operator=( unique_resource&& other ) (library fundamentals TS v3)
noexcept(/*see below*/);

Move assignment operator. Replaces the managed resouce and the deleter with other's.

Formally, let RS be the type of stored resource handle:

* First, calls reset() to dispose the currently owned resource, if any.
* Then assigns the stored resource handle and the deleter with other's. std::move
is applied to the stored resource handle or the deleter of other if
std::is_nothrow_move_assignable_v<RS> or std::is_nothrow_move_assignable_v<D> is
true respectively. Assignment of the stored resource handle is executed first,
unless std::is_nothrow_move_assignable_v<D> is false and
std::is_nothrow_move_assignable_v<RS> is true.
* Finally, sets *this to own the resource if and only if other owned it before
assignment, and other not to own the resource.

If std::is_nothrow_move_assignable_v<RS> is true, RS shall satisfy the
MoveAssignable requirements; otherwise RS shall satisfy the CopyAssignable
requirements. If std::is_nothrow_move_assignable_v<D> is true, D shall satisfy the
MoveAssignable requirements; otherwise D shall satisfy the CopyAssignable
requirements. Failing to satisfy above requirements results in undefined behavior.


other - resource wrapper from which ownership will be transferred

Return value



Any exception thrown in copy-assignment.

noexcept specification:
noexcept(std::is_nothrow_move_assignable_v<RS> &&


If a copy of a member throws an exception, this mechanism leaves other intact and
*this in the released state.


This section is incomplete
Reason: no example

See also

reset disposes or replaces the managed resource
(public member function)
operator= assigns the unique_ptr
(public member function of std::unique_ptr<T,Deleter>)