namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:include:expected

Dies ist eine alte Version des Dokuments!


<expected>

Ein std::expected<Result,Error> enthält entweder das Ergebnis einer Berechnung oder eine Angabe, warum die Berechnung scheiterte:

expected.cpp
#include <expected>
#include <print>
#include <string>
 
std::expected<int, std::string> question(int n)
{
  if (n == 42) return n;
  else return std::unexpected{ n < 42 ? "zu klein" : "zu groß" };
}
 
int main()
{
  for (int n : { 6, 7, 8, 9 })
  {
    auto answer = question(6*n);
    if (answer.has_value())
      std::println("Die richtige Antwort ist {}", answer.value());
    else
      std::println("Fehler: {}", answer.error());
  }
}

Methoden

has_value() Ist Wert vorhanden?
value() erwarteter Wert
error() unerwarteter Wert
value_or(x) Alternative, falls erwarteter Wert nicht vorhanden
error_or(e) Alternative, falls erwarteter Wert vorhanden

Außerdem sind "monadische" Operationen als Methoden definiert. Diese rufen in Abhängigkeit vom Vorhandensein eines Wertes eine Funktion f auf. Dabei werden

Wert vorhanden? ja nein Rückgabetyp von f
and_then(f) f(value()) std::expected<R2,E>
or_else(f) f(error()) std::expected<R,E2>
transform(f) f(value()) R2
transform_error(f) f(error()) E2

Siehe auch: <optional>, <variant>

kennen/include/expected.1730477828.txt.gz · Zuletzt geändert: 2024-11-01 17:17 von rrichter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki