> 백엔드 개발 > C++ > Lambda 함수를 `consexpr` 컨텍스트에서 사용할 수 있습니까?

Lambda 함수를 `consexpr` 컨텍스트에서 사용할 수 있습니까?

DDD
풀어 주다: 2024-10-31 00:30:29
원래의
1043명이 탐색했습니다.

 Can Lambda Functions Be Used in `constexpr` Contexts?

constexpr의 Lambda 함수 지원

constexpr의 람다 함수 지원은 C 커뮤니티에서 널리 논의된 주제였습니다. 현재 [expr.const]/(2.6)에 따라 상수 표현식에서는 람다가 허용되지 않지만 작업 초안 N4582에 포함된 N4487에서는 이 제한을 제거할 것을 제안합니다.

제안된 람다- 관련 변경 사항:

  • 상수 표현식에서 람다를 허용합니다.
  • 모든 데이터 멤버가 리터럴 유형인 경우 클로저 유형을 리터럴 유형으로 간주합니다.
  • 람다 선언자 내에서 constexpr 지정자가 생략된 경우 생성된 함수 호출 연산자는 constexpr 함수의 요구 사항을 충족하는 경우 constexpr로 간주됩니다.

예:

다음 예는 N4487이 승인되면 유효합니다.

<code class="c++">struct Test
{
  static const int value = []() constexpr { return 0; } ();
};</code>
로그인 후 복사

해결 방법:

constexpr 지원이 공식적으로 추가되기 전의 해결 방법으로 다음을 사용할 수 있습니다. 람다 대신 함수 템플릿:

<code class="c++">struct Test
{
  template <typename>
  static const int value = 0;
};</code>
로그인 후 복사

위 내용은 Lambda 함수를 `consexpr` 컨텍스트에서 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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