名前空間
変種
操作

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

From cppreference.com
 
 
 
 
 
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なら、RSMoveAssignable要件を満たす必要があります。それ以外の場合は、RSCopyAssignable要件を満たす必要があります。もしstd::is_nothrow_move_assignable_v<D>trueなら、DMoveAssignable要件を満たす必要があります。それ以外の場合は、DCopyAssignable要件を満たす必要があります。上記の要件を満たさない場合、未定義の動作となります。

目次

[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メンバ関数) [edit]
English 日本語 中文(简体) 中文(繁體)