Espacios de nombres
Variantes

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

De cppreference.com
 
 
Biblioteca de servicios
 
 
Plantilla primaria
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 es que existe, de lo contrario devuelve default_value.

La especialización parcial void 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 usar en caso de que *this no contenga el 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 de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 3886 C++23 U no tiene un argumento de plantilla por defecto. Especificado.

Véase también

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