Lambda Object

람다는 즉석에서 만드는 함수 객체입니다

캡처 절은 외부 변수를 람다 객체 안에 복사할지, 원본을 참조할지 결정합니다.

기본 형식[capture](params) -> return { body } 순서로 작성합니다.
STL 결합sort, find_if, count_if의 사용자 정의 조건을 가까운 위치에 둡니다.
[]

외부 상태 없이 호출합니다

순수 함수처럼 매개변수만 사용하므로 알고리즘 조건이 예측하기 쉽습니다.

[x]

생성 시점 값을 복사합니다

외부 x가 나중에 바뀌어도 람다 내부의 복사본은 영향을 받지 않습니다.

[&x]

원본 변수 캡처 확인

본문에서 값을 바꾸면 외부 변수도 바뀌므로 수명과 동시 접근을 조심합니다.

mutable값 캡처 복사본을 람다 내부에서 수정하려면 매개변수 목록 뒤에 mutable을 붙입니다.
반환 타입대부분 추론되지만 분기마다 반환 타입이 다르면 -> 타입을 명시합니다.
보관람다 타입은 익명이므로 변수에는 auto, 타입 소거에는 std::function을 씁니다.

상태 전달 람다의 핵심은 짧은 함수를 가까운 곳에 두는 것이고, 캡처 방식은 그 함수 객체가 어떤 상태를 소유하는지 드러냅니다.