컴파일 시간 문자열 길이 계산: 정말 constexpr인가요?
컴파일 시간에 문자열 길이를 계산하려고 할 때 코드는 이를 달성하기 위해 재귀 함수(길이)를 활용합니다. 그러나 컴파일 타임에 이 함수의 보장된 평가와 관련하여 의문이 제기됩니다.
표준에서는 constexpr 함수가 컴파일 타임에 평가되도록 명시적으로 요구하지 않습니다. 그럼에도 불구하고 C 표준 초안 섹션 5.19의 비표준 참고 사항은 상수 표현식이 변환 중에 평가될 수 있음을 시사합니다.
컴파일 시간 평가를 보장하기 위해 결과를 constexpr 변수에 할당할 수 있습니다. Bjarne Stroustrup이 설명한 대로:
"컴파일 타임에 표현식을 평가할 수 있는 것 외에도 우리는 컴파일 타임에 표현식이 평가되도록 요구할 수 있기를 원합니다. 변수 정의 앞의 constexpr이 이를 수행합니다( const를 의미합니다."
예:
<code class="cpp">constexpr int len1 = length("abcd");</code>
또한 Stroustrup은 컴파일 시간 평가를 보장하기 위한 특정 조건을 설명합니다.
따라서 단순히 constexpr 함수를 선언하는 것만으로는 컴파일 타임 평가, 결과를 constexpr 변수에 할당하거나 적절한 컨텍스트에서 사용하면 이를 보장합니다.
위 내용은 constexpr 함수는 컴파일 시간 문자열 길이 계산을 보장할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!