std::experimental::unique_resource<R, D>::operator=
From cppreference.com
< cpp | experimental | unique resource
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Experimental
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)
std::experimental::unique_resource
Member functions
unique_resource::operator=
Modifiers
Observers
Non-member functions
unique_resource& operator=( unique_resource&& other )
noexcept(/*see below*/);
(library fundamentals TS v3)
noexcept(/*see below*/);
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.
[edit] Parameters
other
-
resource wrapper from which ownership will be transferred
[edit] Return value
*this
[edit] Exceptions
Any exception thrown in copy-assignment.
noexcept specification:
noexcept(std::is_nothrow_move_assignable_v <RS> && std::is_nothrow_move_assignable_v <D>)
[edit] Notes
If a copy of a member throws an exception, this mechanism leaves other intact and *this in the released state.
[edit] Example
This section is incomplete
Reason: no example
Reason: no example