std::experimental::unique_resource<R, D>:: unique_resource
|
unique_resource
(
)
;
|
(1) | (ライブラリファンダメンタルTS v3) |
|
template
<
class
RR,
class
DD
>
unique_resource ( RR && r, DD && d ) noexcept ( /*下記参照*/ ) |
(2) | (ライブラリファンダメンタルTS v3) |
|
unique_resource
(
unique_resource
&&
other
)
;
|
(3) | (ライブラリファンダメンタルTS v3) |
以下の項目は説明目的で使用されます:
-
RSは格納されたリソースハンドルの型です。 - 式 res_ は基盤となるリソースハンドルを参照します。
-
del_はデリーターオブジェクトを参照します。
unique_resource
はリソースを所有しません。
次に、デリーターは std:: forward < DD > ( d ) で初期化される( std:: is_nothrow_constructible_v < D, DD > が true の場合)。それ以外の場合は d で初期化される。デリーターの初期化が例外を送出した場合、 d ( res_ ) を呼び出す。
構築された
unique_resource
はリソースを所有する。
std::move
が使用される。格納されているリソースハンドルの初期化中に例外が発生した場合、
other
は変更されない。
次に、デリーターは other のデリーターから初期化され、 std:: is_nothrow_move_constructible_v < D > が true の場合
std::move
が使用される。デリーターの初期化中に例外が発生し、かつ
std::
is_nothrow_move_constructible_v
<
RS
>
が
true
でかつ
other
がリソースを所有している場合、
other
のデリーターを
res_
で呼び出してリソースを破棄し、その後
other.
release
(
)
を呼び出す。
構築後、構築された
unique_resource
は、
other
が構築前にリソースを所有していた場合にのみリソースを所有し、
other
はリソースを所有しない状態に設定される。
目次 |
パラメータ
| r | - | リソースハンドル |
| d | - | リソースを破棄するために使用するデリーター |
| other | - |
所有権を取得する別の
unique_resource
|
例外
格納されたリソースハンドルまたはデリーターの初期化中にスローされた例外。
std::
is_nothrow_constructible_v
<
RS, RR
>
||
std::
is_nothrow_constructible_v
<
RS, RR
&
>
)
&&
(
std::
is_nothrow_constructible_v
<
D, DD
>
||
std::
is_nothrow_constructible_v
<
D, DD
&
>
std::
is_nothrow_move_constructible_v
<
R1
>
&&
std::
is_nothrow_move_constructible_v
<
D
>
注記
これらのコンストラクタのメカニズムにより、リソースのリークが発生しないことが保証されます。
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
新しい
unique_ptr
を構築する
(
std::unique_ptr<T,Deleter>
のpublicメンバ関数)
|