public member function
<future>

std::future::valid

bool valid() const noexcept;
检查共享状态的有效性
返回 future 对象当前是否与一个 *共享状态* 相关联。

对于 *默认构造* 的 future 对象,此函数返回 false(除非它被 *移动赋值* 为一个有效的 future)。

只有通过某些 *提供者函数*(例如 asyncpromise::get_futurepackaged_task::get_future)才能初始构造具有 *有效* 共享状态的 Future。

一旦使用 future::get 检索到 *共享状态* 的值,调用此函数将返回 false(除非它被 *移动赋值* 为一个新的有效的 future)。

参数



返回值

如果对象与一个 *共享状态* 相关联,则为 true
否则返回 false

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// future::valid
#include <iostream>       // std::cout
#include <future>         // std::async, std::future
#include <utility>        // std::move

int get_value() { return 10; }

int main ()
{
  std::future<int> foo,bar;
  foo = std::async (get_value);
  bar = std::move(foo);

  if (foo.valid())
    std::cout << "foo's value: " << foo.get() << '\n';
  else
    std::cout << "foo is not valid\n";

  if (bar.valid())
    std::cout << "bar's value: " << bar.get() << '\n';
  else
    std::cout << "bar is not valid\n";

  return 0;
}

输出

foo is not valid
bar's value: 10


数据竞争

访问了 future 对象。

异常安全

无异常保证: 绝不抛出异常。

另见