std::experimental:: optional
|
Definido en el encabezado
<experimental/optional>
|
||
|
template
<
class
T
>
class optional ; |
(library fundamentals TS) | |
La plantilla de clase
std::experimental::optional
gestiona un valor contenido
opcional
, es decir, un valor que puede o no estar presente.
Un caso de uso común para
optional
es el valor de retorno de una función que puede fallar. A diferencia de otros enfoques, como
std::
pair
<
T,
bool
>
,
optional
maneja bien los objetos costosos de construir y es más legible, ya que la intención se expresa explícitamente.
Cualquier instancia de
optional<T>
en cualquier momento dado o
contiene un valor
o
no contiene un valor
.
Si un
optional<T>
contiene un valor
, se garantiza que el valor está asignado como parte de la huella de memoria del objeto
optional
, es decir, nunca se produce asignación dinámica de memoria. Por lo tanto, un objeto
optional
modela un objeto, no un puntero, aunque estén definidos los operadores
operator*()
y
operator->()
.
Cuando un objeto de tipo optional<T> se convierte contextualmente a bool , la conversión devuelve true si el objeto contiene un valor y false si no contiene un valor .
El objeto
optional
contiene un valor
en las siguientes condiciones:
-
El objeto se inicializa con un valor de tipo
T. -
El objeto se asigna desde otro
optionalque contiene un valor .
El objeto no contiene un valor en las siguientes condiciones:
- El objeto es inicializado por defecto.
-
El objeto es inicializado con un valor de
std::experimental::nullopt_t
o un objeto
optionalque no contiene un valor . -
Al objeto se le asigna un valor de
std::experimental::nullopt_t
o de un
optionalque no contiene un valor .
Contenidos |
Parámetros de plantilla
| T | - | el tipo del valor para gestionar el estado de inicialización. El tipo debe cumplir con los requisitos de Destructible . |
Tipos de miembros
| Tipo de miembro | Definición |
value_type
|
T
|
Funciones miembro
|
construye el objeto optional
(función miembro pública) |
|
|
destruye el valor contenido, si existe
(función miembro pública) |
|
|
asigna contenidos
(función miembro pública) |
|
Observadores |
|
|
accede al valor contenido
(función miembro pública) |
|
|
verifica si el objeto contiene un valor
(función miembro pública) |
|
|
devuelve el valor contenido
(función miembro pública) |
|
|
devuelve el valor contenido si está disponible, otro valor en caso contrario
(función miembro pública) |
|
Modificadores |
|
|
intercambia los contenidos
(función miembro pública) |
|
|
construye el valor contenido in-situ
(función miembro pública) |
|
Objetos miembro
| Nombre del miembro | Definición |
val
(private)
|
puntero al valor contenido (que apunta a un miembro de datos del mismo objeto), el nombre es solo para exposición |
Funciones no miembro
compara objetos
optional
(plantilla de función) |
|
crea un objeto
optional
(plantilla de función) |
|
|
especializa el algoritmo
std::swap
(función) |
Clases auxiliares
|
especializa el algoritmo
std::hash
(especialización de plantilla de clase) |
|
|
(library fundamentals TS)
|
indicador de tipo opcional con estado no inicializado
(clase) |
|
(library fundamentals TS)
|
tipo de etiqueta de desambiguación para construcción in-situ de tipos opcionales
(clase) |
|
(library fundamentals TS)
|
excepción que indica acceso verificado a un opcional que no contiene un valor
(clase) |
Objetos auxiliares
|
(library fundamentals TS)
|
un objeto de tipo
nullopt_t
(función) |
|
(library fundamentals TS)
|
un objeto de tipo
std::
experimental
::
in_place_t
(función) |