Namespaces
Variants

std::experimental:: unique_resource

From cppreference.net
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_resource administrador es destruido,
  • el objeto unique_resource administrador 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_resource efectivamente contiene un subobjeto de tipo RS que es o envuelve el manejador del recurso, un eliminador de tipo D y un bool indicando si el contenedor posee el recurso.
  • A efectos explicativos, el subobjeto de tipo RS se denomina manejador de recurso almacenado , y el R almacenado (si R es un tipo objeto) o envuelto (si R es 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

Véase también

(C++11)
puntero inteligente con semántica de propiedad única de objetos
(plantilla de clase)