Как выйти из цикла/функции, если ты в лямбде? С++
Предположим есть подобная функция:
std::expected<int64_t, std::string> foo(/* .... */)
{
std::vector<int64_t> approved{};
for (const auto &value: values)
{
// Возвращается expected<int64_t, std::string>
SomeFunction().map([&approved](int64_t val){approved.push_back(val);})
.or_else([]()
{
// В случае ошибки нужно вернуть expected
// с таким же сообщением, как и в
// возвращенном из SomeFunction
});
}
}
Как написано в комментарии, мне нужно в случае прихода невалидного Expected сразу же выйти из функции и вернуть из нее такой же невалидный expected с таким же сообщением.
Как это сделать в cpp-way? Понятное дело, что можно нагородить пачку из if-else, но ведь во избежание этого и создан монадический интерфейс у expected, можно ли все таки как-то сделать выход из функции, если я внутри лямбды из or_else?