>백엔드 개발 >C++ >`consexpr` 함수의 함수 매개변수를 상수 표현식으로 사용할 수 없는 이유는 무엇입니까?

`consexpr` 함수의 함수 매개변수를 상수 표현식으로 사용할 수 없는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-22 00:28:14546검색

Why Can't I Use a Function Parameter in a `constexpr` Function as a Constant Expression?

상수 표현식에서 constexpr 함수의 함수 매개변수를 사용할 수 없습니다

제공된 코드 조각은 constexpr 함수 make_const 및 함수를 보여줍니다. 상수가 아닌 표현식으로 make_const를 사용하려고 시도하는 t1입니다. t1의 i가 상수 표현식이 아니기 때문에 오류가 발생합니다.

constexpr 함수는 상수 인수가 주어지면 컴파일 타임에 평가될 수 있습니다. 그러나 constexpr 함수에 constexpr이 아닌 매개변수가 전달되면 해당 매개변수가 상수 표현식으로 만들어지지 않습니다.

아래 코드에서 t1은 constexpr 함수이지만 t1 내부의 make_const(i)는 i는 상수가 아니기 때문에 상수 표현식이 아닙니다.

constexpr int t1(const int i)
{
    return make_const(i);
}

업데이트된 코드는 t1이 constexpr로 선언되고 다음을 반환할 수 있음을 보여줍니다. make_const의 결과:

constexpr int t1(const int i)
{
    return make_const(i);
}

그러나 아래 코드에서는 do_something()가 상수 표현식이 아니기 때문에 여전히 오류가 발생합니다.

template<int i>
constexpr bool do_something(){
    return i;
}

constexpr int t1(const int i)
{
    return do_something<make_const(i)>();
}

요약하면 constexpr 함수 매개변수는 상수 표현식이어야 합니다. 상수가 아닌 매개변수가 전달되면 constexpr 함수 내에서 상수 표현식이 되지 않습니다.

위 내용은 `consexpr` 함수의 함수 매개변수를 상수 표현식으로 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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