std::experimental::unique_resource<R, D>:: unique_resource
|
unique_resource
(
)
;
|
(1) | (библиотека fundamentals TS v3) |
|
template
<
class
RR,
class
DD
>
unique_resource ( RR && r, DD && d ) noexcept ( /*см. ниже*/ ) |
(2) | (библиотека fundamentals TS v3) |
|
unique_resource
(
unique_resource
&&
other
)
;
|
(3) | (библиотека fundamentals 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
если
std::
is_nothrow_move_constructible_v
<
RS
>
равно
true
. Если инициализация сохранённого дескриптора ресурса вызывает исключение,
other
не изменяется.
Затем удаляющий объект инициализируется из объекта other с использованием
std::move
если
std::
is_nothrow_move_constructible_v
<
D
>
равно
true
. Если инициализация удаляющего объекта вызывает исключение и
std::
is_nothrow_move_constructible_v
<
RS
>
равно
true
и
other
владеет ресурсом, вызывается удаляющий объект
other
с
res_
для освобождения ресурса, затем вызывается
other.
release
(
)
.
После конструирования, созданный
unique_resource
владеет ресурсом тогда и только тогда, когда
other
владел ресурсом до конструирования, а
other
устанавливается в состояние отсутствия владения ресурсом.
Содержание |
Параметры
| r | - | дескриптор ресурса |
| d | - | функция удаления для освобождения ресурса |
| other | - |
другой
unique_resource
для получения владения
|
Исключения
Любое исключение, выброшенное во время инициализации сохранённого handle ресурса или deleter.
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>
)
|