Programing

함수 매개 변수로서의 Lambda

lottogame 2020. 12. 9. 07:38
반응형

함수 매개 변수로서의 Lambda


auto또는 템플릿을 사용하지 않고 람다 변수 또는 함수 매개 변수를 선언하는 표기법은 무엇입니까 ? 그렇게 할 수있는 방법이 있습니까? 아니면 컴파일러가 컴파일 시간 전에 프로그래머가 이름을 알 수없는 각 람다에 대해 고유 한 클래스 개체를 정의합니까? 그렇다면 그 이유는 무엇입니까? 일종의 함수 포인터로 전달 될 수 없습니까? 그것이 불가능하다면 큰 실망이 될 것입니다.


Lambda는 상태를 유지할 수 있습니다 (주변 컨텍스트에서 캡처 된 참조와 같이). 그렇지 않은 경우 함수 포인터에 저장할 수 있습니다. 만약 그렇다면, 그것들은 함수 객체로 저장되어야합니다 (함수 포인터에 상태를 유지할 곳이 없기 때문입니다).

// No state, can be a function pointer:
int (*func_pointer) (int) = [](int a) { return a; };

// One with state:
int b = 3;
std::function<int (int)> func_obj = [&](int a) { return a*b; };

함수 객체에 다형성 래퍼를 사용할 수 있습니다 . 예를 들면 :

#include <functional>

std::function<double (double, double)> f = [](double a, double b) { return a*b };

참고 URL : https://stackoverflow.com/questions/8109571/lambda-as-function-parameter

반응형