Namespaces
Variants

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

From cppreference.net
Utilities library
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.

Contenidos

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)