В синтаксисе лямбда-функций для какой цели служит «список захвата»?

Взятый из ответа на этот вопрос, в качестве примера это код, который вычисляет сумму элементов в std::vector :

std::for_each(
    vector.begin(),
    vector.end(),
    [&](int n) {
        sum_of_elems += n;
    }
);

Я понимаю, что лямбда-функции — это просто безымянные функции.

Я понимаю синтаксис лямбда-функций , как описано здесь.

Я не понимаю почему лямбда-функциям нужен список захвата, а обычным функциям — нет

  1. Какую дополнительную информацию предоставляет список захвата?
  2. Почему нормальным функциям не нужна эта информация?
  3. Являются ли лямбда-функции чем-то большим, чем просто безымянным функции?

21
задан Community 23 May 2017 в 11:47
поделиться