Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | utility‎ | expected
 
 
Dienstprogramm-Bibliotheken
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Coroutine-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
 
 
Primäre Vorlage
template< class U = std::remove_cv_t<T> >
constexpr T value_or( U&& default_value ) const&;
(1) (seit C++23)
template< class U = std::remove_cv_t<T> >
constexpr T value_or( U&& default_value ) &&;
(2) (seit C++23)

Gibt den erwarteten Wert zurück, wenn er existiert, andernfalls wird default_value zurückgegeben.

Die partielle Spezialisierung void hat diese Member-Funktionen nicht.

1) Wenn std::is_copy_constructible_v<T> oder std::is_convertible_v<U, T> false ist, ist das Programm fehlerhaft.
2) Wenn std::is_move_constructible_v<T> oder std::is_convertible_v<U, T> false ist, ist das Programm fehlerhaft.

Inhalt

[bearbeiten] Parameter

default_value - Der Wert, der verwendet werden soll, falls *this keinen erwarteten Wert enthält

[bearbeiten] Rückgabewert

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

[bearbeiten] Beispiel

[bearbeiten] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3886 C++23 U hat kein Standard-Template-Argument spezifiziert

[bearbeiten] Siehe auch

gibt den erwarteten Wert zurück
(öffentliche Mitgliedsfunktion) [bearbeiten]