Consteval 함수: 함수 인수에 따른 템플릿 매개변수의 제한
C 17에서 함수에 종속적인 템플릿 매개변수에 의존하는 constexpr 함수 정의 논쟁은 금지되었습니다. C 20의 consteval 함수는 컴파일 시간 평가를 강제할 것을 약속하지만, 이는 이제 그러한 코드가 합법화될 수 있다는 의미입니까?
질문:
consteval int foo(int i) { return std::integral_constant
답변:
아니요.
설명:
consteval 함수가 도입되었음에도 불구하고 비템플릿 함수 정의는 단일 지점의 유형 확인을 갖는다는 기본 원칙이 남아 있습니다. 제안된 코드를 합법화하면 ODR(One Definition Rule)에 영향을 미칩니다. 또한 C 20 문서에서는 잠재적인 유형 불일치로 인해 함수 매개변수가 핵심 상수 표현식으로 처리되지 않을 것이라고 명시적으로 명시하고 있습니다.
따라서 함수 매개변수는 템플릿 매개변수 종속성 내에서 상수 표현식으로 직접 사용할 수 없습니다. consteval 함수 컨텍스트에서
위 내용은 Consteval 함수는 함수 인수에 따라 템플릿 매개변수의 함수 매개변수를 합법화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!