std::experimental:: optional
|
Definiert im Header
<experimental/optional>
|
||
|
template
<
class
T
>
class optional ; |
(Library Fundamentals TS) | |
Die Klassenvorlage
std::experimental::optional
verwaltet einen
optionalen
enthaltenen Wert, d.h. einen Wert, der vorhanden sein kann oder nicht.
Ein häufiger Anwendungsfall für
optional
ist der Rückgabewert einer Funktion, die fehlschlagen kann. Im Gegensatz zu anderen Ansätzen, wie
std::
pair
<
T,
bool
>
,
optional
behandelt aufwändig zu konstruierende Objekte gut und ist lesbarer, da die Absicht explizit ausgedrückt wird.
Jede Instanz von
optional<T>
enthält zu jedem gegebenen Zeitpunkt entweder
einen Wert
oder
enthält keinen Wert
.
Wenn ein
optional<T>
einen Wert enthält
, ist garantiert, dass der Wert als Teil des
optional
-Objekt-Footprints alloziert wird, d.h. es findet niemals eine dynamische Speicherallokation statt. Somit modelliert ein
optional
-Objekt ein Objekt, nicht einen Zeiger, obwohl der
operator*()
und
operator->()
definiert sind.
Wenn ein Objekt vom Typ optional<T> kontextuell zu bool konvertiert wird , gibt die Konvertierung true zurück, wenn das Objekt einen Wert enthält und false , wenn es keinen Wert enthält .
Das
optional
Objekt
enthält einen Wert
unter den folgenden Bedingungen:
-
Das Objekt wird mit einem Wert vom Typ
Tinitialisiert. -
Das Objekt wird von einem anderen
optionalzugewiesen, das einen Wert enthält .
Das Objekt enthält keinen Wert unter folgenden Bedingungen:
- Das Objekt wird standardmäßig initialisiert.
-
Das Objekt wird mit einem Wert vom Typ
std::experimental::nullopt_t
oder einem
optional-Objekt initialisiert, das keinen Wert enthält . -
Dem Objekt wird ein Wert vom Typ
std::experimental::nullopt_t
oder ein
optionalzugewiesen, das keinen Wert enthält .
Inhaltsverzeichnis |
Template-Parameter
| T | - | der Typ des Werts, für den der Initialisierungszustand verwaltet werden soll. Der Typ muss die Anforderungen von Destructible erfüllen. |
Mitgliedertypen
| Membertyp | Definition |
value_type
|
T
|
Memberfunktionen
|
Konstruiert das Optional-Objekt
(öffentliche Elementfunktion) |
|
|
Zerstört den enthaltenen Wert, falls vorhanden
(öffentliche Elementfunktion) |
|
|
Weist Inhalte zu
(öffentliche Elementfunktion) |
|
Beobachter |
|
|
Greift auf den enthaltenen Wert zu
(öffentliche Elementfunktion) |
|
|
Prüft, ob das Objekt einen Wert enthält
(öffentliche Elementfunktion) |
|
|
Gibt den enthaltenen Wert zurück
(öffentliche Elementfunktion) |
|
|
Gibt den enthaltenen Wert zurück falls verfügbar, andernfalls einen anderen Wert
(öffentliche Elementfunktion) |
|
Modifikatoren |
|
|
Tauscht die Inhalte aus
(öffentliche Elementfunktion) |
|
|
Konstruiert den enthaltenen Wert direkt
(öffentliche Elementfunktion) |
|
Member-Objekte
| Mitgliedername | Definition |
val
(private)
|
Zeiger auf den enthaltenen Wert (der auf ein Datenmitglied desselben Objekts zeigt), der Name dient nur zur Darstellung |
Nicht-Member-Funktionen
vergleicht
optional
-Objekte
(Funktions-Template) |
|
erstellt ein
optional
-Objekt
(Funktions-Template) |
|
|
spezialisiert den
std::swap
-Algorithmus
(Funktion) |
Hilfsklassen
|
spezialisiert den
std::hash
Algorithmus
(Klassen-Template-Spezialisierung) |
|
|
(library fundamentals TS)
|
Indikator für optionalen Typ mit nicht initialisiertem Zustand
(Klasse) |
|
(library fundamentals TS)
|
Disambiguierungs-Tag-Typ für In-Place-Konstruktion optionaler Typen
(Klasse) |
|
(library fundamentals TS)
|
Exception, die einen geprüften Zugriff auf ein optional ohne enthaltenen Wert anzeigt
(Klasse) |
Hilfsobjekte
|
(library fundamentals TS)
|
ein Objekt vom Typ
nullopt_t
(Funktion) |
|
(library fundamentals TS)
|
ein Objekt vom Typ
std::
experimental
::
in_place_t
(Funktion) |