[]
pure외부 변수를 쓰지 않습니다. 매개변수만으로 결과가 정해지는 짧은 함수처럼 동작합니다.
외부 상태 의존
[x]는 람다 생성 시점의 값을 저장하고, [&x]는 원본을 계속 바라봅니다. mutable과 수명 문제는 이 차이에서 출발합니다.
외부 변수를 쓰지 않습니다. 매개변수만으로 결과가 정해지는 짧은 함수처럼 동작합니다.
생성 시점의 값을 람다 객체 안에 복사합니다. 기본적으로 본문에서 그 복사본을 바꿀 수 없습니다.
원본 변수를 참조합니다. 본문에서 값을 바꾸면 외부 스코프의 원본도 같이 바뀝니다.
외부 스코프에 값이 있다
복사본을 저장해 원본과 분리
복사본만 내부에서 수정 가능
원본을 직접 보고 변경
참조 대상이 먼저 사라지면 위험
혼합 캡처: [x, &y]처럼 x는 값으로 고정하고 y는 원본을 바꾸게 만들 수 있습니다. 편하지만 어떤 변수가 소유되고 어떤 변수가 빌려 쓰이는지 코드에서 바로 보이게 작성해야 합니다.