Почему лямбда фиксирует только переменные автоматического хранения?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему лямбда фиксирует только переменные автоматического хранения?

Сообщение Anonymous »

Я только начал изучать лямбда-функции на C++ и не понимаю, почему лямбда-функции позволяют захватывать только переменные автоматического хранения? Например:

Код: Выделить всё

int x;
int main() {
[&x](int n){x = n;}; // 'x' cannot be captured...
return 0;
}
С другой стороны, статические переменные вообще не нуждаются в захвате

Код: Выделить всё

static int s = 0;
[](int n){s = n;};
Итак, почему первый пример не разрешен, а второй работает?

Подробнее здесь: https://stackoverflow.com/questions/244 ... -variables
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»