Namespaces
Variants

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

From cppreference.net
Utilities library
Modèle primaire
template < class U = std:: remove_cv_t < T > >
constexpr T value_or ( U && default_value ) const & ;
(1) (depuis C++23)
template < class U = std:: remove_cv_t < T > >
constexpr T value_or ( U && default_value ) && ;
(2) (depuis C++23)

Retourne la valeur attendue si elle existe, sinon retourne default_value .

La void spécialisation partielle ne possède pas ces fonctions membres.

1) Si std:: is_copy_constructible_v < T > ou std:: is_convertible_v < U, T > est false , le programme est mal formé.
2) Si std:: is_move_constructible_v < T > ou std:: is_convertible_v < U, T > est false , le programme est mal formé.

Sommaire

Paramètres

default_value - la valeur à utiliser si * this ne contient pas une valeur attendue

Valeur de retour

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 ) )

Exemple

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 3886 C++23 U ne possède pas d'argument template par défaut spécifié

Voir aussi

retourne la valeur attendue
(fonction membre publique)
retourne la valeur inattendue si présente, une autre valeur sinon
(fonction membre publique)