내부에 캡처되지 않은 람다를 사용하는 함수가 있습니다.
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
}
적절한 기능으로 변경하는 것은 사소한 일이지만 람다로 남겨 두지 않는 이유가 있는지 궁금해 했습니다. "일반적인"전역 함수 대신 어디에서나 람다를 사용하지 않는 이유가 있습니까?