[캡쳐](매개변수) -> <반환type> {함수동작}(호출인자)
일반 함수에서 함수 이름이 없어지고 동작만 있는 함수
lambda는 사실상 함수 객체라고 봐도 무방하다.
매개변수, 반환타입, 호출인자는 생략 가능하다.
#include <iostream>
using namespace std;
int main() {
int a = 10;
[a](int b) -> int {
cout << a + b << endl;
return a + b;
}(20);
cout << a;
}
실행 결과
30
10
[] { statement };
[](int a, int b) { statement };
[] { return 100 };
[value0, value1]
: 변수 value0와 value1을 복사하여 람다 함수 내부에서 사용[&value0, &value1]
: 변수 value0와 value1을 참조하여 람다 함수 내부에서 사용[&value0, value1]
: 변수 value0는 참조, value1은 복사하여 람다 함수 내부에서 사용[=]
: 모든 외부 변수를 복사하여 람다 함수 내부에서 사용[&]
: 모든 외부 변수를 참조하여 람다 함수 내부에서 사용[&, value]
: 모든 외부 변수를 참조하지만 value만 복사하여 사용[=, &value]
: 모든 외부 변수를 복사하지만 value만 참조하여 사용