> 백엔드 개발 > C++ > 비 Constexpr 표준 라이브러리 함수에 대한 GCC의 Constexpr 처리는 적합한 확장입니까?

비 Constexpr 표준 라이브러리 함수에 대한 GCC의 Constexpr 처리는 적합한 확장입니까?

Susan Sarandon
풀어 주다: 2024-11-30 01:49:09
원래의
750명이 탐색했습니다.

Is GCC's Constexpr Treatment of Non-Constexpr Standard Library Functions a Conforming Extension?

Constexpr이 아닌 표준 라이브러리 함수를 Constexpr을 준수하는 컴파일러 확장으로 취급하고 있습니까?

현재 C 표준에서는 표준 라이브러리 함수를 다음과 같이 선언해야 합니다. constexpr은 명시적으로 필요한 경우에만 사용됩니다. 그러나 이전 초안에서는 다르게 제안했습니다.

C 11 및 표준 초안

C 11 개발 과정에서 비constexpr 표준 라이브러리 함수를 다음과 같이 명시적으로 처리하는 것을 목표로 하는 제안이 있었습니다. constexpr. 엄격한 적합성 모드에서 이 기능을 지원하기로 한 GCC의 결정은 이 초안을 기반으로 한 것입니다.

C 14의 합의 전환

그러나 C 14 개발 중에 합의가 바뀌었습니다. 제안이 수정되었으며 최종 표준에서는 구현이 명시적으로 요구되지 않는 한 표준 라이브러리 함수 constexpr을 선언하는 것이 금지되어 있다고 명시하고 있습니다.

이 변경은 SFINAE가 이를 활용하여 다양한 구현을 생성할 수 있으므로 구현 전반에 걸쳐 다양한 동작에 대한 우려에서 비롯됩니다. 동일한 코드에 대한 결과입니다.

다음에 대한 적합성 GCC

이 경우 GCC의 현재 구현은 C 14 표준을 위반하므로 비준수 확장입니다. 적합성을 달성하려면 GCC는 엄격한 적합성 모드에서 경고를 발행하거나 이 기능을 비활성화해야 합니다.

내장

컴파일러 내장 함수는 표준 라이브러리 함수와 달리 이 항목에서 제외됩니다. 표준에 포함되지 않기 때문입니다. 따라서 일반적으로 내장 함수를 constexpr로 처리하는 것이 허용됩니다.

위 내용은 비 Constexpr 표준 라이브러리 함수에 대한 GCC의 Constexpr 처리는 적합한 확장입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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