名稱空間
變體
操作

std::experimental::shared_future<T>::then

來自 cppreference.com
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),其中 INVOKECallable 中定義的操作。如果該表示式無效,則行為未定義。

從延續返回的任何值都作為結果儲存在返回的 future 物件的共享狀態中。從延續執行傳播的任何異常都作為異常結果儲存在返回的 future 物件的共享狀態中。

U 為延續的返回型別(即 std::result_of_t<std::decay_t<F>(const std::experimental::shared_future<T> &)>)。如果 U 是某個型別 T2std::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

[編輯] 示例