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]


另见