더북(TheBook)

1.8.2.1 람다 표현식에 이름 지정하기

람다 표현식은 익명 객체지만, 변수에 람다 표현식의 주소를 저장하는 것도 가능하다. 람다 표현식의 타입을 몰라도 컴파일러가 알아서 해준다.

auto cube = [] (double value) { return value*value*value; };
 

auto 키워드는 컴파일러에게 할당문의 오른쪽 결과에서 변수 cube의 타입을 알아내라고 얘기하는 것이고, 그 결과 람다 표현식의 주소를 저장하는 데 필요한 타입을 갖게 된다. [](람다 소개자) 사이에 아무것도 지정하지 않았다면 항상 이렇게 쓸 수 있다. [] 사이에 지정된 것이 있다면 auto 키워드를 쓰지 못할 수도 있다. 이렇게 지정한 cube는 함수 포인터처럼 쓸 수 있다.

double x{2.5};
std::cout << x << " cubed is " << cube(x) << std::endl;
 

출력문에는 2.5의 세제곱이 출력된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.