• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <mutex>

    std::unique_lock::operator=

    unique_lock& operator=(const unique_lock&) = delete; // (1) C++11
    unique_lock& operator=(unique_lock&& u) noexcept;    // (2) C++11
    unique_lock& operator=(unique_lock&& u);             // (2) C++14
    

    概要

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

    効果

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

    事後条件

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

    例外

    • (2) : 投げない

    #include <mutex>
    #include <utility>
    
    int main()
    {
      std::mutex mtx;
      {
        std::unique_lock<std::mutex> lk1(mtx);
        std::unique_lock<std::mutex> lk2;
    
        // lk1からミューテックスオブジェクトの所有権を移動する
        lk2 = std::move(lk1);
      } // lk1はunlock()せず、lk2がunlock()する
    }
    

    出力

    バージョン

    言語

    • C++11

    処理系

    参照