Переменные не должны неявно захватываться в лямбда-выражении
Переменные не должны неявно захватываться в лямбда-выражении.
В лямбда-выражении имеется возможность неявного захвата переменных. Например, это лямбда-выражение
[&](std::int32_t var) {
sum+ = var;
}Если переменная в теле выражения происходит из вызывающего контекста.
Например, в предшествующем лямбда-выражении неясно, sum захватывается из контекста вызова или является глобальной переменной.
Если используются все переменные, захваченные из контекста вызова, и если переменные изменены или только считаны (если переменные считаны, то предпочтителен побочный захват).
Если вы захватываете переменные явно в лямбда-выражении, у вас больше контроля над тем, нужно ли захватывать с помощью ссылки или копирования. кроме того, вы или рецензент можете прочитать лямбда-выражение и определить, была ли переменная захвачена из вызывающего контекста.
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Выражения |
| Категория: Обязательно, Автоматизировано |