C 14의 일반 람다 이해
C 14에 도입된 일반 람다는 모든 값에 작동하는 람다 식을 작성하는 수단을 제공합니다. 유형. 그러나 이 메커니즘은 어떻게 작동합니까?
일반 람다 구현
C 11의 일반 람다와 달리 일반 람다는 템플릿 호출 연산자를 사용합니다. 폐쇄형. [auto](https://en.cppreference.com/w/cpp/keyword/auto) 키워드가 매개변수 목록에 나타나면 컴파일러는 표준 호출 연산자가 아닌 템플릿 호출 연산자를 생성합니다.
예:
auto glambda = [](auto a) { return a; };
이 코드는 다음 호출을 사용하여 클로저 유형을 생성합니다. 연산자:
class /* unnamed */ { public: template<typename T> T operator () (T a) const { return a; } };
표준 정의
C 14 Standard Draft n3690의 단락 5.1.2/5에 따르면 일반 람다 클로저 유형의 호출 연산자입니다. 다음과 같은 속성이 있습니다.
C 템플릿과 Java Generics의 유사성
일반 람다는 컴파일러가 기반으로 다양한 인수 유형을 사용하여 고유한 함수를 생성한다는 점에서 C 템플릿과 유사합니다. 템플릿 매개변수에 대해 그러나 런타임 시 유형 삭제를 활용하여 컴파일 시 유형 정보를 유지하는 Java 제네릭과는 다릅니다. 반면 일반 람다는 명시적 유형을 사용하여 정적으로 특화된 클로저를 만듭니다.
위 내용은 C 14의 일반 람다는 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!