람다 표현식의 매개변수 및 반환 유형 결정
람다 표현식이 제공되면 해당 매개변수와 반환 유형을 확인하는 것이 어려울 수 있습니다. 이 기사에서는 람다 특성을 사용하여 이 정보를 추출하는 방법을 살펴봅니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!