それ自体の内部にある非キャプチャラムダを使用する関数がありました。例:
void foo() {
auto bar = [](int a, int b){ return a + b; }
// code using bar(x,y) a bunch of times
}
ラムダによって実装された機能が別の場所で必要になったので、ラムダをfoo()
グローバル/名前空間スコープに持ち上げます。ラムダのままにするか、コピーと貼り付けのオプションにするか、適切な関数に変更できます。
auto bar = [](int a, int b){ return a + b; } // option 1
int bar(int a, int b){ return a + b; } // option 2
void foo() {
// code using bar(x,y) a bunch of times
}
それを適切な関数に変更するのは簡単ですが、ラムダのままにしない理由があるのだろうかと思いました。「通常の」グローバル関数の代わりにラムダをどこでも使用しない理由はありますか?