std::experimental:: unique_resource
|
Определено в заголовочном файле
<experimental/scope>
|
||
|
template
<
class
R,
class
D
>
class unique_resource ; |
(техническая спецификация библиотеки fundamentals 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
должен быть типом объекта или lvalue-ссылкой на тип объекта. Пусть
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
. При заданной lvalue
d
типа
D
и lvalue
r
типа
UnrefR
, выражение
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)
|
умный указатель с семантикой уникального владения объектом
(шаблон класса) |