std::function<int()> void f1()
{
int a, b, c, d, ..., x, y, z;
return [=] { return a + b + c; };
}
против.
std::function<int()> void f2()
{
int a, b, c, d, ..., x, y, z;
return [a, b, c] { return a + b + c; };
}
Излишне говорить, что первая короче, удобнее и элегантнее, чем последняя.
Однако я все еще беспокоюсь:
С точки зрения производительности последний всегда лучше первого?
Является ли стандарт гарантией, что лямбда-выражение захватывает только необходимые переменные? т.е. в первом примере захватываются только a, b, c, неиспользуемые переменные d,..., x, y, z не являются.