最終更新日時:
が更新

履歴 編集

function
<shared_mutex>

std::shared_lock::operator=(C++14)

shared_lock& operator=(const shared_lock&) = delete; // (1)
shared_lock& operator=(shared_lock&& u) noexcept;    // (2)

概要

  • (1) : コピー代入。コピー不可。
  • (2) : ムーブ代入。

効果

  • (2) : owns_lock() == trueだった場合、unlock()を呼び出す。shared_lockオブジェクトuが保持しているミューテックスの所有権を自分のオブジェクトに移動する。ミューテックスオブジェクトへのポインタおよびowns_lock()の状態をuから移動する。

事後条件

  • (2) : uはミューテックスオブジェクトへの有効なポインタを指さず、owns_lock() == falseとなる。

例外

  • (2) : 投げない

#include <shared_mutex>
#include <utility>

int main()
{
  std::shared_timed_mutex mtx;
  {
    std::shared_lock<std::shared_timed_mutex> lk1(mtx);
    std::shared_lock<std::shared_timed_mutex> lk2;

    // lk1からミューテックスオブジェクトの所有権を移動する
    lk2 = std::move(lk1);
  } // lk1はunlock()せず、lk2がunlock()する
}

出力

バージョン

言語

  • C++14

処理系