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

履歴 編集

function template
<future>

std::swap (非メンバ関数)(C++11)

namespace std {
  template <class R>
  void swap(promise<R>& x, promise<R>& y) noexcept;
}

概要

2つのpromiseオブジェクトを入れ替える

効果

x.swap(y)

戻り値

なし

例外

投げない

#include <iostream>
#include <future>

int main()
{
  std::promise<int> p1;
  std::promise<int> p2;

  std::future<int> f1 = p1.get_future();
  std::future<int> f2 = p2.get_future();

  // 共有状態を入れ替える
  std::swap(p1, p2);

  p1.set_value(1);
  p2.set_value(2);

  // p1に書き込んだ値はf2、
  // p2に書き込んだ値はf1から取得される
  std::cout << f1.get() << std::endl;
  std::cout << f2.get() << std::endl;
}

出力

2
1

バージョン

言語

  • C++11

処理系

参照