C++ 람다가 잘 이해가 안간다면, 다음과 같은 코드를 생각해 보면 된다.
void function()
{
struct functor
{
ClassX& x;
int& i;
functor( ClassX& a, int& b ) : x(a), i(b) {}
void operator() ( ValueType v ) { ..... /* code using x & i */ }
};
ClassX x;
int i;
functor f( x, i );
ValueType a;
f(a);
}
위 코드와 '거의' 동등한 일을 다음 코드를 쓰면 컴파일러가 알아서 만들어 준다는 거다.
void function()
{
ClassX x;
int i;
auto f = [&x,&i](ValueType v){ .... /* code using x&i */ };
ValueType a;
f(a);
}