C++ 람다 표현식의 유형 추론을 통해 컴파일러는 람다의 반환 값 유형을 결정할 수 있습니다. 람다에 return 문이 하나만 있는 경우 반환 값 유형은 반환 표현식의 유형입니다. 람다에 여러 개의 return 문이 있는 경우 반환 형식은 다음 형식 중 하나입니다(컴파일러에서 경고가 발생할 수 있음). return 문이 없으면 반환 값 유형은 void입니다.
C++의 람다 표현식에 대한 유형 추론
Lambda 표현식은 런타임에 익명 함수를 생성할 수 있는 C++의 강력한 구문 기능입니다. 람다 식에 대한 형식 유추는 컴파일러가 람다 식의 반환 값 형식을 결정할 수 있도록 하는 주요 기능입니다.
Syntax
Lambda 표현식은 일반적으로 다음 구문을 사용하여 정의됩니다.
auto lambda = [capture list] (parameter list) -> return-type { // lambda function body }
여기서:
[캡처 목록]
은 람다 표현식이 외부에 액세스할 수 있는 항목을 지정하는 선택적 캡처 목록입니다. 변수. [capture list]
是一个可选的捕获列表,指定 lambda 表达式可以访问的外部变量。(parameter list)
是一个可选的参数列表,指定 lambda 表达式接收的参数。-> return-type
是一个可选的返回类型指定符,指定 lambda 表达式的返回值类型。类型推断
如果未指定返回值类型,编译器将尝试根据 lambda 表达式中的以下规则推断它:
return
语句,则返回值类型为 return
表达式的类型。return
语句,但它们返回不同类型的值,则返回值类型为这些类型中的任何一个。在这种情况下,编译器可能会发出警告。return
语句,则返回值类型为 void
。实战案例
案例 1:使用类型推断
以下 lambda 表达式使用类型推断,返回值类型为 int
:
auto lambda = [] (int a, int b) { return a + b; };
案例 2:指定返回值类型
以下 lambda 表达式显式指定返回值类型为 std::string
:
auto lambda = [] (std::string a, std::string b) -> std::string { return a + b; };
案例 3:推断多重返回类型
以下 lambda 表达式包含两个 return
语句,返回类型推断为 int
或 std::string
(매개변수 목록)
은 람다 표현식에서 수신한 매개변수를 지정하는 선택적 매개변수 목록입니다.
-> return-type
은 람다 표현식의 반환 값 유형을 지정하는 선택적 반환 유형 지정자입니다. 🎜🎜유형 추론🎜🎜🎜반환 값 유형이 지정되지 않은 경우 컴파일러는 람다 표현식의 다음 규칙에 따라 추론을 시도합니다. 🎜return
문인 경우 반환 값 유형은 return
표현식의 유형입니다. 🎜람다 표현식에 하나 이상의 return
문이 포함되어 있지만 서로 다른 유형의 값을 반환하는 경우 반환 값 유형은 해당 유형 중 하나입니다. 이 경우 컴파일러는 경고를 발행할 수 있습니다. 🎜람다 표현식에 return
문이 포함되어 있지 않으면 반환 값 유형은 void
입니다. int
입니다. 🎜auto lambda = [] (int a, std::string b) { if (a < 0) { return a; } else { return b; } };🎜🎜 사례 2: 반환 값 유형 지정 🎜🎜🎜다음 람다 식은 반환 값 유형을
std::string
으로 명시적으로 지정합니다. 🎜rrreee🎜🎜사례 3: 여러 반환 유형 추론 🎜🎜🎜 다음 람다 식 수식에는 두 개의 return
문이 포함되어 있으며 반환 유형은 int
또는 std::string
으로 추론됩니다. 🎜rrreee위 내용은 C++ Lambda 표현식은 유형 추론을 어떻게 수행합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!