enum class
<future>

std::future_errc

enum class future_errc;
future物件的錯誤碼
enum class型別定義了future類別錯誤條件

future_errc 標籤int描述
broken_promise0future共享其共享狀態promise物件在被設定值或異常之前就被銷燬了。
future_already_retrieved1已從該提供者檢索了future物件。
promise_already_satisfied2promise物件已被設定值或異常。
no_state3某個操作嘗試訪問無共享狀態物件的共享狀態
所有庫實現都至少定義了上述值,但也可能提供額外的值。
future_errc 標籤int描述
broken_promise*future共享其共享狀態promise物件在被設定值或異常之前就被銷燬了。
future_already_retrieved*已從該提供者檢索了future物件。
promise_already_satisfied*promise物件已被設定值或異常。
no_state*某個操作嘗試訪問無共享狀態物件的共享狀態
* = 一個非零值(包括broken_promise)。具體值可能因庫實現而異,但保證這四個值存在且互不相同。實現可以提供額外的標籤和值。

future_errc 列舉型別的值可用於建立error_condition物件,以便與future_errorcode成員返回的值進行比較。

非成員過載函式


非成員類特化


示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// std::future_errc example:
#include <iostream>     // std::cerr
#include <future>       // std::promise, std::future_error, std::future_errc

int main ()
{
  std::promise<int> prom;

  try {
    prom.get_future();
    prom.get_future();   // throws std::future_error with future_already_retrieved
  }
  catch (std::future_error& e) {
    if (e.code() == std::make_error_condition(std::future_errc::future_already_retrieved))
    std::cerr << "[future already retrieved]\n";
    else std::cerr << "[unknown exception]\n";
  }

  return 0;
}

輸出(到stderr

[future already retrieved]


另見