지역 변수 생성
local_var는 create_lambda() 안에서만 삽니다.
[&local_var]는 값을 들고 나가는 것이 아니라 지역
변수의 주소를 빌립니다. 함수가 끝나면 그 주소는 더 이상 안전하지
않습니다.
auto create_lambda() {
int local_var = 10;
return [&local_var]() { ... };
}
local_var는 create_lambda() 안에서만 삽니다.
람다 객체는 지역 변수의 참조만 들고 밖으로 나갑니다.
원본 변수는 이미 사라졌으므로 정의되지 않은 동작이 됩니다.
복사본이 람다 안에 남아 원본 수명과 분리됩니다.
비동기 작업처럼 오래 살아야 할 객체의 수명을 명확히 드러냅니다.
알고리즘 호출 안에서 바로 실행되고 끝날 때만 신중하게 씁니다.
점검 문장: 람다가 저장되거나 반환되거나 비동기로
넘어갈 수 있다면 [&] 대신 값 캡처 또는 소유권 캡처를
먼저 검토합니다.