Wie kann ich das direkte Ergebnis eines Funktionsaufrufs zurückgeben, der std :: erwartet zurückgibt?
Posted: 27 Feb 2025, 07:04
Nehmen wir dieses kurze Beispiel: < /p>
Wenn ich es so mache und auto result = don (1) ohne Fehler, dann result.value () Typ ist std :: erwartet und nicht int (ohne Erwähnung des Any_casts . Rufen Sie an: < /p>
Der Typ Don (1) .Value () ist int .
Meine Frage lautet also: Wie kann ich das vereinfachen? Gibt es eine Möglichkeit, das Funktionsaufrufergebnis zurückzugeben?
Code: Select all
std::expected doN(int n)
{
switch (n)
{
case 1: return do1();
case 2: return do2();
// ...
}
}
std::expected do1()
{
if (error)
{
return std::unexpected({/* ... */});
}
return 23;
}
Code: Select all
std::expected doN(int n)
{
switch (n)
{
case 1:
auto value = do1();
if (value.has_value()) {
return value.value();
}
return std::unexpected(value.error());
// ...
}
}
Meine Frage lautet also: Wie kann ich das vereinfachen? Gibt es eine Möglichkeit, das Funktionsaufrufergebnis zurückzugeben?