Как мне вернуться из функции внутри лямбды?
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
Как мне вернуться из функции внутри лямбды?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.