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 物件。

異常安全

無異常保證: 絕不丟擲異常。

另見