Как выйти из цикла/функции, если ты в лямбде? С++

Предположим есть подобная функция:

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?


Ответы (0 шт):