Почему лямбда фиксирует только переменные автоматического хранения?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

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