> 백엔드 개발 > C++ > C 14 일반 람다는 'auto' 키워드를 사용하여 유형 유연성을 어떻게 달성합니까?

C 14 일반 람다는 'auto' 키워드를 사용하여 유형 유연성을 어떻게 달성합니까?

Patricia Arquette
풀어 주다: 2024-12-16 16:36:17
원래의
818명이 탐색했습니다.

How Do C  14 Generic Lambdas Achieve Type Flexibility Using the `auto` Keyword?

C 14 Auto 키워드 변형의 일반 람다 이해

C 14에서 일반 람다, auto 키워드가 있는 람다 표현식 유형 인수 유형은 향상된 유연성을 제공합니다. 비템플릿 호출 연산자가 있는 C 11 람다와 달리 일반 람다는 정의한 클로저 유형 내에 템플릿 호출 연산자가 있습니다.

예를 들어 다음 코드는 일반 람다를 보여줍니다.

auto glambda = [](auto a) { return a; };
로그인 후 복사

이 경우 glambda의 폐쇄 유형은 다음과 같이 정의됩니다.

class /* unnamed */
{
public:
    template<typename T>
    T operator () (T a) const { return a; }
};
로그인 후 복사

이것은 glambda는 템플릿 호출 연산자가 있는 고유하고 이름이 지정되지 않은 펑터의 인스턴스라는 의미입니다. 람다의 매개변수 선언에서 auto의 각 발생은 발명된 유형 템플릿 매개변수에 해당하므로 호출 연산자가 다양한 유형의 인수를 처리할 수 있습니다.

C 14 표준(n3690)은 클로저 유형의 호출 연산자를 지정합니다. 일반 람다의 경우 람다의 매개변수 선언 절의 각 자동에 대해 하나의 발명된 유형 템플릿 매개변수가 있는 템플릿 매개변수 목록이 있습니다. 반환 유형 및 함수 매개변수는 람다의 후행 반환 유형 및 매개변수 선언 절에서 파생되며 해당 발명된 템플릿 매개변수의 이름으로 자동 대체됩니다.

요약하면 C 14의 일반 람다 템플릿 호출 연산자를 사용하여 고유하고 이름이 지정되지 않은 펑터를 나타냅니다. 이는 컴파일러가 각 인수 유형에 대해 대체된 유형으로 새 함수를 생성하는 C 템플릿 기반 다형성과 다릅니다. 이는 컴파일 중 유형 삭제를 포함하는 Java의 제네릭과 더 밀접하게 일치합니다.

위 내용은 C 14 일반 람다는 'auto' 키워드를 사용하여 유형 유연성을 어떻게 달성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿