Espacios de nombres
Variantes
Acciones

std::optional<T>::value_or

De cppreference.com
< cpp‎ | utility‎ | optional
 
 
Biblioteca de servicios
 
 
template< class U >
constexpr T value_or( U&& default_value ) const&;
(1) (desde C++17)
template< class U >
constexpr T value_or( U&& default_value ) &&;
(2) (desde C++17)

Devuelve el valor contenido si *this tiene un valor; de lo contrario, devuelve default_value.

1) Equivalente a bool(*this) ? **this : static_cast<T>(std::forward<U>(default_value))
2) Equivalente a bool(*this) ? std::move(**this) : static_cast<T>(std::forward<U>(default_value))

Contenido

[editar] Parámetros

default_value - El valor a usar en caso que *this esté vacío.
Requisitos de tipo
-
T debe satisfacer los requisitos de CopyConstructible para poder usar la sobrecarga (1).
-
T debe satisfacer los requisitos de MoveConstructible para poder usar la sobrecarga (2).
-
U&& debe ser convertible a T

[editar] Valor de retorno

El valor actual si *this tiene un valor; de lo contrario, default_value.

[editar] Excepciones

Cualquier excepción lanzada por el constructor seleccionado del valor de retorno T.

[editar] Ejemplo

#include <optional>
#include <iostream>
#include <cstdlib>
 
std::optional<const char*> quiza_getenv(const char* n)
{
    if(const char* x = std::getenv(n))
       return x;
    else
       return {};
}
 
int main()
{
     std::cout << quiza_getenv("MYPWD").value_or("(ninguno)") << '\n';
}

Posible salida:

(ninguno)

[editar] Véase también

Devuelve el valor contenido.
(función miembro pública) [editar]