Как правильно захватывать глобальные переменные в лямбде? Хочу использовать следующим образом, но выдаются предупреждения. Как их подавить?
#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) /*...*/
.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Можно ли как-то включить в maincpp все возможные заголовочные файлы языка, чтобы каждый раз не думать, что подключать? Может есть специальный...
С функцией move вроде бы всё понятно: она приводит любую ссылку на объект к неконстантной rvalue-ссылке, которая в соответствующем контексте передастся...