Namespaces
Variants

std::experimental:: optional

From cppreference.net
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 optional que 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 optional que no contiene un valor .
  • Al objeto se le asigna un valor de std::experimental::nullopt_t o de un optional que 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)