Scroll to navigation

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

NAME

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

Synopsis


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.

Parameters


other - resource wrapper from which ownership will be transferred

Return value


*this

Exceptions


Any exception thrown in copy-assignment.


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

Notes


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

Example


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>)

2022.07.31 http://cppreference.com