Как передается значение в лямбда-выражение?
Хочу понять, как работают лямбда-выражения. Наткнулся на такой пример:
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
}