Namespaces
Variants

std::experimental::optional<T>:: value_or

From cppreference.net
template < class U >
constexpr T value_or ( U && default_value ) const & ;
(Library Fundamentals TS)
template < class U >
constexpr T value_or ( U && default_value ) && ;
(Library Fundamentals TS)

Gibt den enthaltenen Wert zurück, falls * this einen Wert enthält, andernfalls wird default_value zurückgegeben.

1) Entspricht bool ( * this ) ? ** this : static_cast < T > ( std:: forward < U > ( default_value ) ) .
2) Entspricht bool ( * this ) ? std :: move ( ** this ) : static_cast < T > ( std:: forward < U > ( default_value ) ) .

Inhaltsverzeichnis

Parameter

default_value - der zu verwendende Wert, falls * this leer ist
Typanforderungen
-
T muss die Anforderungen von CopyConstructible erfüllen, um Überladung (1) zu verwenden.
-
T muss die Anforderungen von MoveConstructible erfüllen, um Überladung (2) zu verwenden.
-
U&& muss in T konvertierbar sein.

Rückgabewert

Der aktuelle Wert, falls * this einen Wert hat, oder default_value andernfalls.

Exceptions

Jede Ausnahme, die vom ausgewählten Konstruktor des Rückgabewerts T geworfen wird.

Beispiel

#include <cstdlib>
#include <experimental/optional>
#include <iostream>
std::experimental::optional<const char*> maybe_getenv(const char* n)
{
    if (const char* x = std::getenv(n))
        return x;
    else
        return {};
}
int main()
{
    std::cout << maybe_getenv("MYPWD").value_or("(none)") << '\n';
}

Mögliche Ausgabe:

(none)

Siehe auch

gibt den enthaltenen Wert zurück
(öffentliche Elementfunktion)