std::experimental:: unique_resource
|
Definido en el encabezado
<experimental/scope>
|
||
|
template
<
class
R,
class
D
>
class unique_resource ; |
(library fundamentals TS v3) | |
unique_resource
es un envoltorio RAII universal para manejadores de recursos que posee y gestiona un recurso a través de un manejador y elimina ese recurso cuando el
unique_resource
es destruido.
El recurso se elimina utilizando el eliminador de tipo
D
cuando ocurre cualquiera de los siguientes casos:
-
el objeto
unique_resourceadministrador es destruido, -
el objeto
unique_resourceadministrador es asignado desde otro recurso mediante operator= o reset() .
Sea el tipo
RS
igual a
R
si
R
es un tipo objeto, o
std::
reference_wrapper
<
std::
remove_reference_t
<
R
>>
en caso contrario:
-
unique_resourceefectivamente contiene un subobjeto de tipoRSque es o envuelve el manejador del recurso, un eliminador de tipoDy un bool indicando si el contenedor posee el recurso. -
A efectos explicativos, el subobjeto de tipo
RSse denomina manejador de recurso almacenado , y elRalmacenado (siRes un tipo objeto) o envuelto (siRes un tipo referencia) se denomina manejador de recurso subyacente . Estos dos términos no son utilizados por el LFTS.
Contenidos |
Parámetros de plantilla
| R | - | tipo de manejador de recurso |
| D | - | tipo de deleter |
| Requisitos de tipo | ||
-
R
debe ser un tipo objeto o una referencia lvalue a un tipo objeto. Sea
UnrefR
std::
remove_reference_t
<
R
>
,
UnrefR
debe ser
MoveConstructible
, y si
UnrefR
no es
CopyConstructible
,
std::
is_nothrow_move_constructible_v
<
UnrefR
>
debe ser
true
.
|
||
-
D
debe ser un tipo
Destructible
y
MoveConstructible
FunctionObject
, y si
D
no es
CopyConstructible
,
std::
is_nothrow_move_constructible_v
<
D
>
debe ser
true
. Dado un lvalue
d
de tipo
D
y un lvalue
r
de tipo
UnrefR
, la expresión
d
(
r
)
debe estar bien formada.
|
||
Funciones miembro
construye un nuevo
unique_resource
(función miembro pública) |
|
|
elimina el recurso gestionado si existe
(función miembro pública) |
|
asigna un
unique_resource
(función miembro pública) |
|
Modificadores |
|
|
libera la propiedad
(función miembro pública) |
|
|
elimina o reemplaza el recurso gestionado
(función miembro pública) |
|
Observadores |
|
|
accede al manejador del recurso subyacente
(función miembro pública) |
|
|
accede al deleter utilizado para eliminar el recurso gestionado
(función miembro pública) |
|
|
accede al objeto apuntado si el manejador del recurso es un puntero
(función miembro pública) |
|
Funciones no miembro
crea un
unique_resource
, verificando el valor inválido
(plantilla de función) |
Guías de deducción
Notas
Los tipos de manejo de recursos que satisfacen
NullablePointer
también pueden ser gestionados por
std::unique_ptr
. A diferencia de
unique_ptr
,
unique_resource
no requiere
NullablePointer
.
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Véase también
|
(C++11)
|
puntero inteligente con semántica de propiedad única de objetos
(plantilla de clase) |