Constexpr 인수를 기반으로 한 함수 오버로딩
인수의 constexprness를 기반으로 한 함수 오버로딩은 C 11의 프로그래머가 직면하는 제한 사항입니다. 동일한 시그니처를 사용하여 두 개의 함수를 정의할 수 없지만 하나는 constexpr이고 다른 하나는 constexpr이 아닙니다.
표준 호환 C 11 구현에서는 이러한 오버로드를 허용하지 않으며 이 제한은 의도적으로 적용되었습니다. 그러나 이 문제는 이후 버전의 C 표준에서 인식되어 해결되었습니다.
C 17에서는 "constexpr 람다" 개념이 도입되어 이 문제에 대한 해결 방법을 제공했습니다. Constexpr 람다를 사용하면 컴파일 타임에 실행될 수 있고 constexpr 인수를 허용할 수 있는 익명 함수를 생성할 수 있습니다.
또한 C 20부터 "2단계 조회"로 알려진 새로운 오버로드 해결 규칙 세트가 제공됩니다. 구현되었습니다. 이러한 규칙은 constexpr 인수가 있는 함수를 호출할 때 constexpr 함수의 우선순위를 지정하여 constexprness를 기반으로 함수 오버로드를 효과적으로 시뮬레이션합니다.
constexpr 람다를 활용하거나 C 20 이상에서 새로운 오버로드 해결 규칙을 준수함으로써 프로그래머는 기능을 달성할 수 있습니다.
예:
위 내용은 Constexpr 인수를 기반으로 C 주소 함수 오버로드가 어떻게 이루어졌습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!