std::experimental::unique_resource<R, D>::operator=
From cppreference.com
< cpp | experimental | unique resource
| unique_resource<R, D>& operator=( unique_resource&& other ) noexcept( /*see below*/ ); |
(ライブラリ基本TS v3) | |
ムーブ代入演算子。管理されているリソースとデリータをotherのものに置き換えます。
形式的には、格納されているリソースハンドルの型をRSとします。
- まず、現在所有しているリソースがあれば、reset()を呼び出して破棄します。
- 次に、格納されているリソースハンドルとデリータをotherのものに代入します。格納されているリソースハンドルまたはotherのデリータには、それぞれstd::is_nothrow_move_assignable_v<RS>またはstd::is_nothrow_move_assignable_v<D>がtrueである場合、std::moveが適用されます。格納されているリソースハンドルの代入は、std::is_nothrow_move_assignable_v<D>がfalseであり、かつstd::is_nothrow_move_assignable_v<RS>がtrueである場合を除き、最初に行われます。
- 最後に、代入前にotherがリソースを所有していた場合にのみ、*thisがリソースを所有するように設定し、otherはリソースを所有しないようにします。
もしstd::is_nothrow_move_assignable_v<RS>がtrueなら、RSはMoveAssignable要件を満たす必要があります。それ以外の場合は、RSはCopyAssignable要件を満たす必要があります。もしstd::is_nothrow_move_assignable_v<D>がtrueなら、DはMoveAssignable要件を満たす必要があります。それ以外の場合は、DはCopyAssignable要件を満たす必要があります。上記の要件を満たさない場合、未定義の動作となります。
目次 |
[edit] Parameters
| その他 | - | 所有権が移動されるリソースラッパー |
[edit] Return value
*this
[edit] Exceptions
コピー代入中に例外がスローされる場合。
noexcept 指定:
noexcept( std::is_nothrow_move_assignable_v<RS> && std::is_nothrow_move_assignable_v<D> )
[edit] Notes
メンバーのコピー中に例外がスローされた場合、このメカニズムはotherをそのままにし、*thisを解放された状態にします。
[edit] Example
| このセクションは未完成です 理由: 例がありません |
[edit] See also
| 管理しているリソースを解放または置換する (公開メンバ関数) | |
unique_ptrを代入します( std::unique_ptr<T,Deleter>のpublicメンバ関数) |