Как мне вернуться из функции внутри лямбды?

std::for_each - это не тот алгоритм, который return следует использовать, если c++11 вы хотите завершить цикл lambda-functions раньше. Кажется, вам нужен lambda std::find_if или что-то подобное. Вам cxx следует использовать алгоритм, наиболее cpp подходящий для вашей задачи, а flow-of-control не только тот, с которым lambda вы знакомы.


Если вы действительно, действительно, действительно должны control-flow "вернуться" из алгоритма lambda-expressions раньше, вы можете -

Предупреждение: то, что program-flow следует ниже, является действительно, действительно плохой cpp идеей, и вам практически control-flow никогда не следует этого lambda-expressions делать. Действительно, просмотр control-flow кода может растопить ваше c++ лицо. Вас предупредили!

Вызвать исключение:

bool contains2(Iter begin, Iter end, const T& x)
{
  try {
    std::for_each(begin, end, [&x](const T& y) {
        if (x == y)
          throw std::runtime_error("something");
    });
  }
  catch(std::runtime_error &e) {
    return true;
  }
  return false;
}

c++

lambda

return

c++11

control-flow

2022-02-20T08:07:42+00:00