Как передается значение в лямбда-выражение?

Хочу понять, как работают лямбда-выражения. Наткнулся на такой пример:

int main()
{
    vector<int> srcVec;
    for (int val = 0; val < 10; val++)
    {
        srcVec.push_back(val);
    }
 
    std::for_each(srcVec.begin(), srcVec.end(), [] (int _n) { 
            std::cout << _n << '\n'; 
        }
    );

 
    return EXIT_SUCCESS;
}

В нем ,вроде как , все ясно, кроме того как получается значение '_n'.Я понимаю, что в параметрах функции вызываем лямбду у которой принимается 'int _n',но не могу нигде найти в какой момент или ,так сказать, где этот параметр передается(откуда она его получает)?Спасибо.


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

for_each possible implementation из стандарта. f(*first) - то место где в лямбду передаётся фактический параметр:

template<class InputIt, class UnaryFunction>
constexpr UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f)
{
    for (; first != last; ++first) {
        f(*first);
    }
    return f; // implicit move since C++11
}
→ Ссылка