std::experimental::unique_resource
來自 cppreference.com
定義於標頭檔案 <experimental/scope> |
||
template< class R, class D > class unique_resource; |
(庫基礎 TS v3) | |
unique_resource
是一個通用的 RAII 包裝器,用於資源控制代碼,它透過控制代碼擁有並管理資源,並在 unique_resource
被銷燬時處置該資源。
當發生以下任一情況時,使用型別為 D
的刪除器處置資源:
- 管理
unique_resource
物件被銷燬, - 管理
unique_resource
物件透過 operator= 或 reset() 從另一個資源賦值。
設型別 RS
為 R
,如果 R
是一個物件型別,否則為 std::reference_wrapper<std::remove_reference_t<R>>
-
unique_resource
有效地持有一個型別為RS
的子物件(它是或包裝了資源控制代碼)、一個型別為D
的刪除器以及一個指示包裝器是否擁有資源的 bool 標誌。 - 為了解釋目的,型別為
RS
的子物件被稱為*儲存的資源控制代碼*,而儲存的(如果R
是物件型別)或包裝的(如果R
是引用型別)R
被稱為*底層資源控制代碼*。LFTS 不使用這兩個術語。
目錄 |
[編輯] 模板引數
R | - | 資源控制代碼型別 |
D | - | 刪除器型別 |
型別要求 | ||
-R 應該是一個物件型別,或者是物件型別的左值引用。設 UnrefR 為 std::remove_reference_t<R>,UnrefR 應該為 可移動構造的 (MoveConstructible),如果 UnrefR 不是 可複製構造的 (CopyConstructible),則 std::is_nothrow_move_constructible_v<UnrefR> 應為 true。 | ||
-D 應該是一個 可析構的 (Destructible) 和 可移動構造的 (MoveConstructible) 函式物件 (FunctionObject) 型別,如果 D 不是 可複製構造的 (CopyConstructible),則 std::is_nothrow_move_constructible_v<D> 應為 true。給定型別為 D 的左值 d 和型別為 UnrefR 的左值 r ,表示式 d(r) 應該格式良好。 |
[編輯] 成員函式
構造一個新的 unique_resource (public 成員函式) | |
如果存在,處置所管理的資源 (public 成員函式) | |
賦值一個 unique_resource (public 成員函式) | |
修改器 | |
釋放所有權 (public 成員函式) | |
處置或替換所管理的資源 (public 成員函式) | |
觀察器 | |
訪問底層資源控制代碼 (public 成員函式) | |
訪問用於處置所管理資源的刪除器 (public 成員函式) | |
如果資源控制代碼是指標,訪問所指向的物件 (public 成員函式) |
[編輯] 非成員函式
建立一個 unique_resource ,檢查無效值(函式模板) |
[編輯] 推導指南
[編輯] 註釋
滿足 可空指標 (NullablePointer) 的資源控制代碼型別也可以由 std::unique_ptr 管理。與 unique_ptr
不同,unique_resource
不要求 可空指標 (NullablePointer)。
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 參閱
(C++11) |
具有唯一物件所有權語義的智慧指標 (類模板) |