Namespaces
Variants

std::experimental:: optional

From cppreference.net
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 T initialisiert.
  • Das Objekt wird von einem anderen optional zugewiesen, 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 optional zugewiesen, 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)