>백엔드 개발 >C++ >Consteval 함수는 함수 인수에 따라 템플릿 매개변수의 함수 매개변수를 합법화할 수 있나요?

Consteval 함수는 함수 인수에 따라 템플릿 매개변수의 함수 매개변수를 합법화할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-10-24 03:53:30492검색

Can Consteval Functions Legalize Function Parameters in Template Parameters Dependent on Function Arguments?

Consteval 함수: 함수 인수에 따른 템플릿 매개변수의 제한

C 17에서 함수에 종속적인 템플릿 매개변수에 의존하는 constexpr 함수 정의 논쟁은 금지되었습니다. C 20의 consteval 함수는 컴파일 시간 평가를 강제할 것을 약속하지만, 이는 이제 그러한 코드가 합법화될 수 있다는 의미입니까?

질문:

consteval int foo(int i) { return std::integral_constant::value; }. 이 코드는 C 20에서 유효합니까?

답변:

아니요.

설명:

consteval 함수가 도입되었음에도 불구하고 비템플릿 함수 정의는 단일 지점의 유형 확인을 갖는다는 기본 원칙이 남아 있습니다. 제안된 코드를 합법화하면 ODR(One Definition Rule)에 영향을 미칩니다. 또한 C 20 문서에서는 잠재적인 유형 불일치로 인해 함수 매개변수가 핵심 상수 표현식으로 처리되지 않을 것이라고 명시적으로 명시하고 있습니다.

따라서 함수 매개변수는 템플릿 매개변수 종속성 내에서 상수 표현식으로 직접 사용할 수 없습니다. consteval 함수 컨텍스트에서

위 내용은 Consteval 함수는 함수 인수에 따라 템플릿 매개변수의 함수 매개변수를 합법화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.