類模板
<future>

std::shared_future

template <class T>  shared_future;template <class R&> shared_future<R&>;   // specialization : T is a reference type (R&)template <>         shared_future<void>; // specialization : T is void
共享 future
一個 shared_future 物件其行為類似於一個 future 物件,除了它可以被複制,並且可以有多個 shared_future 物件共享共享狀態的所有權。一旦就緒,它們還允許共享狀態中的值被檢索(可以多次)檢索

shared_future 物件可以從 future 物件隱式轉換(參見其建構函式),或者透過呼叫 future::share 來顯式獲得。在這兩種情況下,從其獲得的 future 物件都會將其與共享狀態的關聯轉移給 shared_future,並使其自身變為無效

共享狀態的生命週期至少持續到與它關聯的最後一個物件被銷燬為止。從 shared_future (使用成員函式 get)檢索值不會釋放其對共享狀態的所有權(與 futures 不同)。因此,如果與 shared_future 物件關聯,共享狀態可以比最初獲取它的物件(如果有的話)存活更長時間。

成員函式


模板特化

<future> 中聲明瞭兩個特定的 shared_future 特化。
1
2
template <class R&> shared_future<R&>;   // specialization : T is a reference type (R&)
template <>         shared_future<void>; // specialization : T is void 
它們的執行方式與未特化的模板相同,除了它們的 shared_future::get 成員函式的返回值。