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