C 14의 일반 람다는 어떻게 작동합니까?
Dec 06, 2024 am 12:53 AMC 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에 따르면 일반 람다 클로저 유형의 호출 연산자입니다. 다음과 같은 속성이 있습니다.
- 각 발생 매개변수 목록의 [auto](https://en.cppreference.com/w/cpp/keyword/auto)는 발명된 유형 템플릿 매개변수에 해당합니다.
- 호출 연산자의 반환 유형과 함수 매개변수가 파생됩니다. 각 [auto](https://en.cppreference.com/w/cpp/keyword/auto)를 발명된 템플릿 매개변수로 대체하여 람다의 후행 반환 유형 및 매개변수 선언 절에서 name.
C 템플릿과 Java Generics의 유사성
일반 람다는 컴파일러가 기반으로 다양한 인수 유형을 사용하여 고유한 함수를 생성한다는 점에서 C 템플릿과 유사합니다. 템플릿 매개변수에 대해 그러나 런타임 시 유형 삭제를 활용하여 컴파일 시 유형 정보를 유지하는 Java 제네릭과는 다릅니다. 반면 일반 람다는 명시적 유형을 사용하여 정적으로 특화된 클로저를 만듭니다.
위 내용은 C 14의 일반 람다는 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C 언어 함수에 의해 반환 된 값 유형은 무엇입니까? 반환 값을 결정하는 것은 무엇입니까?

STL (정렬, 찾기, 변환 등)의 알고리즘을 효율적으로 사용하려면 어떻게합니까?
