이름이 없는 함수 개체
내포되는 함수
재활용하지 않을 일회성 함수를 간편하게 작성하는 방법
[Capture](Parameter) <specifier> -> <return_type>
{
<body>
}
[] 안에 외부 변수 Capture 방식을 지정한다.
int x = 1;
int y = 2;
[](){ std::cout << "No captureing" << std::endl; };
[=]() { return x > y ? x : y }; // 값에 의한 캡쳐
[=]() { x = 3 }; // 값 캡쳐 방식 -> 값을 바꿀 수 없다.
[&]() { x = 3; }; // 참조 캡처 방식 -> 값 변경 가능
[x]() { std::cout << x << std::endl; }; // 특정 값 캡쳐
[x]() { std::cout << x << y << std::endl; }; // 특정 값 캡쳐
[=, &y]() // 혼합 방식
{
y = 3;
std::cout << x << y << std::endl;
}
[] { std::cout << "lol" << std::endl; } // () 생략 가능
auto myFunc = [] (int x, int y) { return x + y; };
myFunc(a, b);
값에 의한 캡쳐 개체를 수정할 수 있게 해준다.
괜찮은 언어 디자인이나 기존 c++ 방식과 반대된다.
[x]() mutable { std::cout << ++x << endl; };
반환형을 지정해 준다.
안적어도 유추해주지만 비추.