最終更新日時:
が更新

履歴 編集

function
<future>

std::shared_future::operator=(C++11)

shared_future& operator=(const shared_future& rhs);     // (1)
shared_future& operator=(shared_future&& rhs) noexcept; // (2)

概要

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

効果

  • (1) : 共有状態を解放し、rhsの共有状態を含むコンテンツを*thisにコピー代入する。rhs*thisが同じ共有状態を参照するようになる。

事後条件

  • (1) : valid() == rhs.valid()
  • (2) : valid()の戻り値が、この関数を呼び出す前のrhs.valid()と等価になること。rhs.valid() == falseになること。

例外

  • (2) : 投げない

戻り値

*this

#include <cassert>
#include <future>
#include <utility>

int main()
{
  // コピー代入(同じ共有状態を参照する)
  {
    std::promise<int> p;

    std::shared_future<int> f1 = p.get_future().share();
    std::shared_future<int> f2;

    f2 = f1; // コピー

    // 1つのpromiseによって書き込まれた結果値を、
    // 複数のshared_futureオブジェクトで読み取る
    p.set_value(3);

    assert(f1.get() == 3);
    assert(f2.get() == 3);
  }

  // ムーブ代入(共有状態の移動)
  {
    std::promise<int> p;
    std::shared_future<int> f1 = p.get_future();

    // shared_futureから共有状態を移動
    // f1は共有状態を持たなくなる
    std::shared_future<int> f2;
    f2 = std::move(f1);

    p.set_value(3);

    assert(f2.get() == 3);
  }
}

出力

バージョン

言語

  • C++11

処理系

参照