익명(람다) 함수란 별도의 선언 없이 인라인 코드 한 줄로 사용할 수 있는 함수입니다.
[](type parameter) -> return type{statement}
람다 함수를 쉽게 변수에 저장하려면 auto 키워드 를 사용하면 됩니다.
auto는 자료형이 들어가는 자리에 사용할 수 있는 키워드로, 타입을 추론하여 자동으로 타입을 결정하여 주는 키워드입니다.
auto 키워드를 사용한 변수의 자료형이 결정 되는 때는 run time이 아니라 compile time입니다. auto를 사용하는 변수가 동적 타입인 것은 아니기 때문에 compile time에 알 수 없는 타입에 사용할 수는 없습니다. parameter의 자료형과 같은 자리에 말이죠.
반환형을 명시하지 않아도 상관이 없다.
#include <iostream>
int main(){
auto f = [](int a, int b){return a + b;};
printf("%d", f(3,4));
}
---------출력-----------
7
---------출력-----------
#include <iostream
int main(){
auto f = [](int a, int b) -> int {return a + b;};
printf("%d", f(3,4));
}
7
#include <iostream>
#include <functional>
int main(){
std::function<int (int, int)> f = [](int a, int b) -> int {return a + b;};
printf("%d", f(3,4));
}
7
#include <iostream>
int main(){
auto f = [](int a, int b){printf("a is %d and b is %d", a, b);};
f(3,4);
}
a is 3 and b is 4