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

履歴 編集

function
<future>

std::promise::デストラクタ(C++11)

~promise();

概要

promiseオブジェクトの破棄

効果

  1. まず共有状態が準備完了状態(future_status::ready)でなければ、error conditionとしてbroken_promiseを持つfuture_error例外オブジェクトを格納したのち、準備完了状態にする。
  2. 共有状態を解放する。

#include <iostream>
#include <future>
#include <thread>
#include <utility>

void calc(std::promise<int> p)
{
  // 通常行う p.set_value() をしなかったとする

  // ここで promise のデストラクタが例外オブジェクトを書き込む
}

int main()
{
  std::promise<int> p;
  std::future<int> f = p.get_future();

  std::thread t(calc, std::move(p));

  try {
    // 上で書き込まれた例外が送出される
    std::cout << f.get() << std::endl;
  }
  catch (std::future_error& e) {
    std::cout << e.what() << std::endl;
  }

  t.join();
}

出力例

std::future_error: Broken promise

バージョン

言語

  • C++11

処理系

参照