名稱空間
變體
操作

std::experimental::unique_resource

來自 cppreference.com
< cpp‎ | 實驗性
定義於標頭檔案 <experimental/scope>
template< class R, class D >
class unique_resource;
(庫基礎 TS v3)

unique_resource 是一個通用的 RAII 包裝器,用於資源控制代碼,它透過控制代碼擁有並管理資源,並在 unique_resource 被銷燬時處置該資源。

當發生以下任一情況時,使用型別為 D 的刪除器處置資源:

  • 管理 unique_resource 物件被銷燬,
  • 管理 unique_resource 物件透過 operator=reset() 從另一個資源賦值。

設型別 RSR,如果 R 是一個物件型別,否則為 std::reference_wrapper<std::remove_reference_t<R>>

  • unique_resource 有效地持有一個型別為 RS 的子物件(它是或包裝了資源控制代碼)、一個型別為 D 的刪除器以及一個指示包裝器是否擁有資源的 bool 標誌。
  • 為了解釋目的,型別為 RS 的子物件被稱為*儲存的資源控制代碼*,而儲存的(如果 R 是物件型別)或包裝的(如果 R 是引用型別)R 被稱為*底層資源控制代碼*。LFTS 不使用這兩個術語。

目錄

[編輯] 模板引數

R - 資源控制代碼型別
D - 刪除器型別
型別要求
-
R 應該是一個物件型別,或者是物件型別的左值引用。設 UnrefRstd::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)

[編輯] 示例

[編輯] 參閱

具有唯一物件所有權語義的智慧指標
(類模板) [編輯]