名稱空間
變體
操作

std::experimental::packaged_task<R(Args...)>::packaged_task (庫基礎 TS)

來自 cppreference.com
 
 
實驗性
技術規範
檔案系統庫 (檔案系統 TS)
庫基礎 (庫基礎 TS)
庫基礎 2 (庫基礎 TS v2)
庫基礎 3 (庫基礎 TS v3)
並行性擴充套件 (並行性 TS)
並行性擴充套件 2 (並行性 TS v2)
併發性擴充套件 (併發性 TS)
併發擴充套件 2 (併發 TS v2)
概念 (概念 TS)
範圍 (範圍 TS)
反射 (反射 TS)
數學特殊函式 (特殊函式 TR)
實驗性非 TS
模式匹配
線性代數
std::execution
契約
2D 圖形
 
 
 
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) 型別值的指標,其中 Aalloc 的型別。該指標僅在 packaged_task 物件的生命週期內有效。
以上都不是 程式格式錯誤。

[編輯] 引數

f - 要執行的可呼叫目標(函式、成員函式、lambda 表示式、函式物件)
alloc - 儲存任務時使用的分配器
rhs - 從中移動的 std::experimental::packaged_task

[編輯] 異常

2,3)f 的複製/移動建構函式丟擲的任何異常,如果分配失敗,則可能丟擲 std::bad_alloc
4) (無)