C 11에서 constexpr이 가능합니까?
질문:
C 11이 다음을 결정할 수 있습니까? 표현식은 컴파일 타임 상수 표현식입니다. (constexpr)?
답변:
예, 다음 기술을 사용하여 이 결정을 기반으로 컴파일 타임 부울 값을 생성할 수 있습니다.
template<typename T> constexpr typename remove_reference<T>::type makeprval(T &&& t) { return t; } #define isprvalconstexpr(e) noexcept(makeprval(e))
이 매크로는 noException 연산자를 활용하여 표현식 e가 prvalue 상수 표현식인지 확인합니다. noException(makeprval(e))이 true로 평가되는 경우 e 표현식은 prvalue 상수 표현식입니다.
설명:
Prvalue 상수 표현식에는 특정 제한 사항이 있습니다.
makeprval 함수가 선언되지 않습니다. noException이므로 e가 prvalue 상수 표현식인 경우 makeprval(e) 호출은 상수 표현식이 됩니다. 따라서 noException 연산자는 true를 반환합니다.
제한 사항:
isprvalconstexpr 매크로에는 몇 가지 제한 사항이 있습니다.
위 내용은 C 11은 표현식이 컴파일 타임 상수인지 판단할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!