Как правильно захватывать глобальные переменные в лямбде? Хочу использовать следующим образом, но выдаются предупреждения. Как их подавить?
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
int offset = 1;
int scale = 2;
int main() {
auto shift = [&offset, scale](int b) { return (offset + b) * scale; };
std::vector values = {1, 2, 3, 4, 5};
std::transform(values.cbegin(), values.cend(), std::ostream_iterator<int>{std::cout}, shift);
}
Глобальные переменные, как и статические, нет необходимости (и не разрешается) захватывать. Их можно использовать в лямбдах без захвата.
Если очень хочется иметь в лямбде копию переменной (например если лямбда - mutable, и эту копию хочется изменять), то можно использовать захват с инициализацией:
[offset_copy = offset, scale_copy = scale](int b) /*...*/.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости