std::experimental::when_any
定義於標頭檔案 <experimental/future> |
||
template< class Sequence > struct when_any_result { |
(併發技術規範) | |
template< class InputIt > auto when_any( InputIt first, InputIt last ) |
(1) | (併發技術規範) |
template< class... Futures > auto when_any( Futures&&... futures ) |
(2) | (併發技術規範) |
建立一個 `future` 物件,當至少一個輸入 `future` 和 `shared_future` 準備就緒時,該 `future` 物件也準備就緒。如果任何輸入 `future` 或 `shared_future` 無效,則行為未定義。
具體來說,令 `Sequence` 為 std::vector<typename std::iterator_traits<InputIt>::value_type> 用於 (1),為 std::tuple<std::decay_t<Futures>...> 用於 (2)。此函式模板建立一個包含 `when_any_result<Sequence>` 的共享狀態,並返回一個引用該共享狀態的 `future`。每個輸入 `future` 都被移動到共享狀態中 `when_any_result<Sequence>` 的 `futures` 成員中的相應物件,每個輸入 `shared_future` 都被複制到共享狀態中 `when_any_result<Sequence>` 的 `futures` 成員中的相應物件。`Sequence` 中物件的順序與引數的順序匹配。
在此呼叫之後,每個輸入的 `future` 不再有效;每個輸入的 `shared_future` 仍然有效。
[編輯] 返回值
一個引用由呼叫建立的共享狀態的 `future`。該 `future` 始終為 valid(),當呼叫中的至少一個輸入 `future` 和 `shared_future` 準備就緒時,它也準備就緒。`when_any_result` 的 `index` 成員包含 `futures` 成員中準備就緒的 `future` 或 `shared_future` 的位置。