Namespaces
Variants

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

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support du langage
Support de type (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (obsolète en C++20)
 
 
Patron principal
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)

Renvoie la valeur attendue si elle existe, sinon renvoie 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é.

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)