std::expected<T,E>::value
Von cppreference.com
| Primäre Vorlage |
||
| constexpr T& value() &; |
(1) | (seit C++23) |
| constexpr const T& value() const&; |
(2) | (seit C++23) |
| constexpr T&& value() &&; |
(3) | (seit C++23) |
| constexpr const T&& value() const&&; |
(4) | (seit C++23) |
| void partielle Spezialisierung |
||
| constexpr void value() const&; |
(5) | (seit C++23) |
| constexpr void value() &&; |
(6) | (seit C++23) |
Wenn *this einen erwarteten Wert enthält, wird eine Referenz auf den enthaltenen Wert zurückgegeben. Bei der void-Teilspezialisierung wird nichts zurückgegeben.
Andernfalls wird eine Ausnahme vom Typ std::bad_expected_access<std::decay_t<E>> ausgelöst, die eine Kopie von error() enthält.
3,4) Wenn std::is_copy_constructible_v<E> oder std::is_constructible_v<E, decltype(std::move(error()))> false ist, ist das Programm schlecht geformt.
Inhalt |
[bearbeiten] Rückgabewert
1,2)
val3,4) std::move(
val)[bearbeiten] Ausnahmen
1,2,5) Löst std::bad_expected_access(std::as_const(error())) aus, wenn *this einen unerwarteten Wert enthält.
3,4,6) Löst std::bad_expected_access(std::move(error())) aus, wenn *this einen unerwarteten Wert enthält.
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein 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 3940 | C++23 | E musste für die Überladungen (5,6) nicht kopier-/move-konstruierbar sein |
Gefordert |
[bearbeiten] Siehe auch
| gibt den erwarteten Wert zurück, falls vorhanden, andernfalls einen anderen Wert (öffentliche Mitgliedsfunktion) | |
| greift auf den erwarteten Wert zu (öffentliche Mitgliedsfunktion) | |
| gibt den unerwarteten Wert zurück (öffentliche Mitgliedsfunktion) | |
| (C++23) |
Ausnahme, die den geprüften Zugriff auf ein expected anzeigt, das einen unerwarteten Wert enthält(Klassenschablone) |