상수 표현식에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!