std::experimental::packaged_task<R(Args...)>::packaged_task (庫基礎 TS)
來自 cppreference.com
< cpp | experimental | 庫擴充套件 | packaged task
packaged_task() noexcept; |
(1) | (庫基礎 TS) |
template< class F > explicit packaged_task( F&& f ); |
(2) | (庫基礎 TS) |
template< class F, class Allocator > explicit packaged_task( std::allocator_arg_t, const Allocator& alloc, F&& f ); |
(3) | (庫基礎 TS) |
packaged_task( const packaged_task& ) = delete; |
(4) | (庫基礎 TS) |
packaged_task( packaged_task&& rhs ) noexcept; |
(5) | (庫基礎 TS) |
構造新的 std::experimental::packaged_task
物件。
1) 構造一個沒有任務和沒有共享狀態的
std::experimental::packaged_task
物件。2) 構造一個具有共享狀態和任務副本的
std::experimental::packaged_task
物件,使用 std::forward<F>(f) 初始化。如果 std::decay<F>::type 的型別與 std::packaged_task<R(ArgTypes...)> 相同,則此建構函式不參與過載解析。3) 構造一個具有共享狀態和任務副本的
std::experimental::packaged_task
物件,使用 std::forward<F>(f) 初始化。使用提供的分配器分配儲存任務所需的記憶體,該分配器被視為型別擦除的分配器(參見下文)。如果 std::decay<F>::type 的型別與 std::packaged_task<R(ArgTypes...)> 相同,則此建構函式不參與過載解析。4) 複製建構函式被刪除,
std::experimental::packaged_task
只能移動。5) 構造一個
std::experimental::packaged_task
,其共享狀態和任務原先由 rhs 擁有,使 rhs 沒有共享狀態且任務已被移動。[編輯] 型別擦除的分配器
packaged_task
接受分配器引數 alloc
的建構函式將該引數視為型別擦除的分配器。packaged_task
用於分配記憶體的記憶體資源指標(如果指定)的確定方式如下:
alloc 的型別 |
記憶體資源指標的值 |
不存在(構造時未指定分配器) | 在構造時 std::experimental::pmr::get_default_resource() 的值。 |
std::nullptr_t | 在構造時 std::experimental::pmr::get_default_resource() 的值。 |
可轉換為的指標型別 std::experimental::pmr::memory_resource* |
static_cast<std::experimental::pmr::memory_resource*>(alloc) |
的特化 std::experimental::pmr::polymorphic_allocator |
alloc.resource() |
滿足 分配器 要求的任何其他型別 | 指向 std::experimental::pmr::resource_adaptor<A>(alloc) 型別值的指標,其中 A 是 alloc 的型別。該指標僅在 packaged_task 物件的生命週期內有效。 |
以上都不是 | 程式格式錯誤。 |
[編輯] 引數
f | - | 要執行的可呼叫目標(函式、成員函式、lambda 表示式、函式物件) |
alloc | - | 儲存任務時使用的分配器 |
rhs | - | 從中移動的 std::experimental::packaged_task |
[編輯] 異常
4) (無)