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 はキャプチャされません。