std::experimental::shared_future<T>::then
template< class F > future</* 見下文 */> then( F&& func ) const; |
||
將延續 func 附加到 *this。如果 *this 沒有關聯的共享狀態(即 valid() == false),則行為未定義。
建立一個與將返回的 future
物件關聯的共享狀態,以及 func 的一個副本 fd,其構造方式如同透過在呼叫 then
的執行緒中評估 DECAY_COPY(std::forward<F>(func)),其中 DECAY_COPY 定義為
template<class T> std::decay_t<T> DECAY_COPY(T&& v) { return std::forward<T>(v); } |
噹噹前與 *this 關聯的共享狀態就緒時,在未指定的執行執行緒上呼叫 *延續* INVOKE(std::move(fd), *this),其中 INVOKE 是 Callable 中定義的操作。如果該表示式無效,則行為未定義。
從延續返回的任何值都作為結果儲存在返回的 future
物件的共享狀態中。從延續執行傳播的任何異常都作為異常結果儲存在返回的 future
物件的共享狀態中。
設 U
為延續的返回型別(即 std::result_of_t<std::decay_t<F>(const std::experimental::shared_future<T> &)>)。如果 U
是某個型別 T2
的 std::experimental::future<T2>,則 then
的返回型別是 std::experimental::future<T2>,否則是 std::experimental::future<U>。這被稱為 *隱式解包*。
如果發生隱式解包且延續返回一個無效的 future
,則共享狀態將準備好一個型別為 std::future_error 的異常,其錯誤條件為 std::future_errc::broken_promise。
此函式返回後,valid() 為 true。
[編輯] 引數
func | - | 要附加的延續 |
[編輯] 返回值
一個與此物件建立的共享狀態關聯的 std::experimental::future 物件。對於返回的物件,valid() == true。
[編輯] 示例
本節不完整 原因:無示例 |