public member function
<future>

std::packaged_task::valid

bool valid() const noexcept;
檢查共享狀態是否有效
返回 packaged_task 當前是否關聯了一個共享狀態

對於預設構造packaged_task 物件,此函式返回 false(除非它被移動賦值交換了一個有效的 packaged_task)。

引數



返回值

如果物件關聯了共享狀態,則返回 true
否則返回 false

資料競爭

訪問 packaged_task 物件。

示例

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
26
// packaged_task::get_future
#include <iostream>     // std::cout
#include <utility>      // std::move
#include <future>       // std::packaged_task, std::future
#include <thread>       // std::thread

// function that launches an int(int) packaged_task in a new thread:
std::future<int> launcher (std::packaged_task<int(int)>& tsk, int arg) {
	if (tsk.valid()) {
      std::future<int> ret = tsk.get_future();
	  std::thread (std::move(tsk),arg).detach();
	  return ret;
	}
	else return std::future<int>();
}

int main ()
{
  std::packaged_task<int(int)> tsk ([](int x){return x*2;});

  std::future<int> fut = launcher (tsk,25);

  std::cout << "The double of 25 is " << fut.get() << ".\n";

  return 0;
}

輸出

The double of 25 is 50.


異常安全

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

另見