반응형
함수 매개 변수로서의 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
반응형
'Programing' 카테고리의 다른 글
PHP에서 HTTP 캐시 헤더를 사용하는 방법 (0) | 2020.12.09 |
---|---|
컨텍스트가 필요한 Android 단위 테스트 (0) | 2020.12.09 |
테이블을 다른 파일 그룹으로 이동하려면 어떻게해야합니까? (0) | 2020.12.08 |
jQuery size () 메서드 대 길이 속성 (0) | 2020.12.08 |
프로그램이 자바 스크립트의 변수 변경을 기다리도록하려면 어떻게해야합니까? (0) | 2020.12.08 |