Я нашел здесь , что лямбда-выражения захвачены по значению.Это означает, что если алгоритм внутренне использует второй алгоритм, который принимает значение лямбды по значению, любое изменяемое состояние лямбда не будет сохранено.Я опубликую свой пример связанных вопросов здесь:
remove_if(begin(values), end(values), [i = 0U, it = cbegin(intervals), end = cend(intervals)](const auto&) mutable {
return it != end && ++i > it->first && (i <= it->second || (++it, true));
})
Таким образом, на момент написания моего первоначального вопроса remove_if
имел поведение, определяемое реализацией для mutable
лямбды.Есть ли список других функций, которые определены реализацией?