close
Namespaces
Variants

std::experimental::unique_resource<R, D>::operator=

From cppreference.com
 
 
Experimental
Technical Specification
Filesystem library (filesystem TS)
Library fundamentals (library fundamentals TS)
Library fundamentals 2 (library fundamentals TS v2)
Library fundamentals 3 (library fundamentals TS v3)
Extensions for parallelism (parallelism TS)
Extensions for parallelism 2 (parallelism TS v2)
Extensions for concurrency (concurrency TS)
Extensions for concurrency 2 (concurrency TS v2)
Concepts (concepts TS)
Ranges (ranges TS)
Reflection (reflection TS)
Mathematical special functions (special functions TR)
Experimental Non-TS
Pattern Matching
Linear Algebra
std::execution
Contracts
2D Graphics
 
 
 
unique_resource& operator=( unique_resource&& other )
    noexcept(/*see below*/);
(library fundamentals TS v3)

Move assignment operator. Replaces the managed resource 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

See also

disposes or replaces the managed resource
(public member function) [edit]
assigns the unique_ptr
(public member function of std::unique_ptr<T,Deleter>) [edit]