> 백엔드 개발 > C++ > C에서 독점 Constexpr if-else 경로를 어떻게 보장할 수 있나요?

C에서 독점 Constexpr if-else 경로를 어떻게 보장할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-11-27 17:15:13
원래의
269명이 탐색했습니다.

How Can I Guarantee Exclusive Constexpr if-else Paths in C  ?

독점적인 Constexpr if-else 경로 보장

constexpr if-else 절에서는 else 사례가 절대 사용되지 않도록 하는 것이 중요합니다. 전통적으로 static_assert(false)를 사용할 수 있습니다. 이러한 경우 오류를 발생시킵니다. 그러나 이 접근 방식은 예기치 않게 명령문을 true로 주장하는 컴파일 오류를 발생시킵니다.

대신 else 케이스에 접근할 수 없도록 강제하려면 삭제된 명령문을 템플릿 매개변수에 종속시켜야 합니다. 이는 템플릿 인수에 관계없이 std::false_type을 반환하는 Always_false 템플릿을 사용하여 달성할 수 있습니다.

template <class... T> constexpr std::false_type always_false{};

if constexpr (condition1) {
    // ...
} else if constexpr (condition2) {
    // ...
} else if constexpr (condition3) {
    // ...
} else {
    static_assert(always_false<T...>);
}
로그인 후 복사

이 솔루션은 C에서 그렇지 않은 경우 프로그램이 잘못된 형식으로 간주된다는 사실을 기반으로 합니다. 템플릿이나 constexpr if-else 하위 문에 대해 유효한 특수화가 생성될 수 있습니다. 따라서 else 절에 접근할 수 없게 되면 컴파일러는 컴파일 오류를 발생시켜 코드가 유효한지 확인합니다.

위 내용은 C에서 독점 Constexpr if-else 경로를 어떻게 보장할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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