最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

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

### 処理系

- Clang: ??
- GCC: 4.7.0 ✅
- ICC: ??
- Visual C++: 2012 ✅

## 参照