Software Workshop

C++14 이전에는 람다 초기 캡쳐(대괄호로 묶인 부분)는 람다 외부의 변수를 참고할 뿐이었다. 그러나 C++14부터는 임의의 표현식을 사용할 수 있게 되었다. 자체적으로 변수를 선언하고 초기화하거나 외부 변수를 참조하는 등 자유롭게 사용가능해졌다.

#include <iostream>

using namespace std;

int main(void)
{
    int x = 4;
    auto y = [&r = x, x = x+1]()->int {
                 // r = 4, x = 5
                 r += 2;
                 // r = 6
                 return x+2;
                 // return 7
             }();
    cout << x << endl;
    cout << y << endl;
}
6
7