C 11에서 "auto"를 사용한 람다 표현식 유형 추론
C 11에서 람다는 프로그래머가 익명을 정의할 수 있는 강력한 기능입니다. 기능. 람다의 유형을 추론하기 위해 "auto" 키워드를 사용하면 람다가 함수 포인터 유형이라는 일반적인 오해가 발생합니다.
람다의 특성
그러나 , 이 가정은 올바르지 않습니다. 람다 식의 기본 형식은 명시적으로 정의되지 않습니다. 대신 람다는 일반적으로 펑터의 구문 설탕입니다. 람다는 펑터 객체로 직접 변환됩니다. 여기서 [] 괄호 안의 요소는 생성자 매개변수와 객체 멤버가 되고, () 괄호 안의 매개변수는 펑터의 연산자()에 대한 매개변수가 됩니다.
Lambda 함수 포인터로 변환
변수를 캡처하지 않는 람다는 실제로 함수 포인터로 변환될 수 있습니다. 이 변환은 표준에서 지원되지만 모든 컴파일러(예: MSVC2010)에서는 지원되지 않습니다. 그러나 이 변환이 람다의 실제 유형이 함수 포인터임을 의미하지는 않습니다.
결론
"auto"로 추론된 람다 식의 유형은 지정되지 않았습니다. 펑터 유형. 변수를 캡처하지 않는 람다는 함수 포인터로 변환될 수 있지만 이 변환은 실제 기본 유형과 동일하지 않다는 점을 이해하는 것이 중요합니다.
위 내용은 C 11 람다 표현식의 유형은 함수 포인터인 'auto'로 추론됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!