> 백엔드 개발 > C++ > C 람다 표현식의 매개변수와 반환 유형을 어떻게 결정할 수 있습니까?

C 람다 표현식의 매개변수와 반환 유형을 어떻게 결정할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-12-31 07:09:09
원래의
694명이 탐색했습니다.

How Can I Determine the Parameter and Return Types of a C   Lambda Expression?

람다 표현식의 매개변수 및 반환 유형 결정

람다 표현식이 제공되면 해당 매개변수와 반환 유형을 확인하는 것이 어려울 수 있습니다. 이 기사에서는 람다 특성을 사용하여 이 정보를 추출하는 방법을 살펴봅니다.

C 11에는 람다 식이 도입되어 다양한 시나리오에서 사용할 수 있습니다. 한 가지 잠재적인 사용 사례는 람다를 함수 템플릿에 인수로 전달하는 것이지만, 이를 성공적으로 수행하려면 람다의 매개변수와 반환 유형을 아는 것이 중요합니다.

처음에는 std::function을 사용하여 발생한 람다 표현식을 나타내려고 시도합니다. 오류. 그러나 Lambda_traits를 도입하면 더욱 강력한 솔루션이 제공됩니다. Lambda_traits는 람다 연산자()의 decltype을 사용하여 매개변수 유형을 결정할 수 있습니다.

다음 코드 조각은 람다 특성을 활용하여 람다 식에서 유형 정보를 추출하는 방법을 보여줍니다.

template <typename TLambda>
void f(TLambda lambda)
{
   typedef typename lambda_traits<TLambda>::param_type  P;
   typedef typename lambda_traits<TLambda>::return_type R;

   std::function<R(P)> fun = lambda; // Construct the std::function object
}
로그인 후 복사

이 예제 시나리오에서 f 함수 템플릿은 람다를 인수로 받아들이고 람다 특성을 활용하여 매개변수를 추론하고 반환합니다.

[](auto x) {}와 같이 명시적 유형을 지정하지 않는 일반 람다의 경우 이 접근 방식은 작동하지 않습니다. 그럼에도 불구하고 람다 특성은 매개변수와 반환 유형이 정의된 람다에 효과적인 것으로 입증되었습니다.

위 내용은 C 람다 표현식의 매개변수와 반환 유형을 어떻게 결정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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