std::experimental:: unique_resource
|
ヘッダーで定義
<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 member function) |
|
|
管理対象リソースが存在する場合、それを破棄する
(public member function) |
|
unique_resource
を代入する
(public member function) |
|
修飾子 |
|
|
所有権を解放する
(public member function) |
|
|
管理対象リソースを破棄または置換する
(public member function) |
|
オブザーバ |
|
|
基盤となるリソースハンドルにアクセスする
(public member function) |
|
|
管理対象リソースの破棄に使用されるデリータにアクセスする
(public member function) |
|
|
リソースハンドルがポインタの場合、ポインタ先にアクセスする
(public member function) |
|
非メンバー関数
無効値をチェックして
unique_resource
を作成する
(関数テンプレート) |
推論ガイド
注記
NullablePointer
を満たすリソースハンドル型は、
std::unique_ptr
によって管理することもできます。
unique_ptr
とは異なり、
unique_resource
は
NullablePointer
を必要としません。
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
|
(C++11)
|
ユニークなオブジェクト所有権セマンティクスを持つスマートポインタ
(クラステンプレート) |