Namespaces
Variants

std::expected<T,E>::value_or

Desde es.cppreference.net
 
 
Biblioteca de utilidades
Soporte del lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de bibliotecas (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación tripartita
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (obsoleto en C++20)
 
 
Plantilla principal
template< class U = std::remove_cv_t<T> > 
constexpr T value_or( U&& default_value ) const&;
(1) (desde C++23)
template< class U = std::remove_cv_t<T> > 
constexpr T value_or( U&& default_value ) &&;
(2) (desde C++23)

Devuelve el valor esperado si existe; de lo contrario, devuelve default_value.

La void especialización parcial no tiene estas funciones miembro.

1) Si std::is_copy_constructible_v<T> o std::is_convertible_v<U, T> es false, el programa está mal formado.
2) Si std::is_move_constructible_v<T> o std::is_convertible_v<U, T> es false, el programa está mal formado.

Parámetros

default_value - el valor a utilizar en caso de que * this no contenga un valor esperado

Valor de retorno

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

Ejemplo

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 3886 C++23 U no tiene un argumento de plantilla predeterminado especificado

Véase también

devuelve el valor esperado
(función miembro pública)
devuelve el valor inesperado si está presente, otro valor en caso contrario
(función miembro pública)