C에서 "if constexpr()"과 "if()" 문은 조건 분기에서 서로 다른 목적으로 사용됩니다. 두 문 모두 표현식을 평가하지만 주요 차이점은 평가 시점에 있습니다.
"if constexpr()":
"if()":
"만약 constexpr()":
"if()":
예시:
다음을 고려하세요. 다음 코드 조각:
template<typename T> auto length(const T& value) noexcept { if constexpr (std::is_integral<T>::value) { // is number return value; } else { return value.length(); } }
이 함수는 숫자 또는 "length()" 멤버 함수가 있는 모든 유형입니다. "if constexpr()"가 없으면 "T" 유형에 관계없이 컴파일 중에 두 분기가 모두 고려됩니다. 하지만 "if constexpr()"을 사용하면 해당 브랜치만 컴파일 및 실행되어 불필요한 코드를 제거하고 성능을 최적화합니다.
위 내용은 C 컴파일 타임 평가에서 `if constexpr()`과 `if()`의 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!