필요한 이름만 캡처한다
[&]와 [=]는 의존성을 숨긴다. limit, logger처럼 필요한 이름을 명시한다.
람다는 짧게 쓰여도 실제로는 함수 객체다. 캡처한 값이 언제 복사되고 언제 참조되는지 모르면 알고리즘 밖에서 dangling이 생긴다.
[&]와 [=]는 의존성을 숨긴다. limit, logger처럼 필요한 이름을 명시한다.
즉시 호출되는 알고리즘 predicate와 나중에 실행되는 callback은 참조 캡처 위험이 다르다.
람다 안에 검증, 변환, 로그가 섞이면 이름 있는 함수 객체가 더 낫다.
auto callback = [id = user.id()](Event event) {
record_event(id, event);
};