constexpr 함수 'function'의 결과가 상수 식이면 안 됩니다.
함수 함수 를 컴파일 시와 같이 constexpr
평가할 수 없습니다. 함수는 다른 constexpr
함수만 호출할 constexpr
수 있습니다.
예시
조건부 평가 작업의 왼쪽 피연산자가 컨텍스트에서 유효하지 않은 경우 Visual Studio 2017에서 constexpr
오류를 올바르게 발생합니다. 다음 코드는 Visual Studio 2015에서 컴파일되지만 Visual Studio 2017에서는 컴파일되지 않습니다.
// C3615.cpp
// Compile with: /c
template<int N>
struct myarray
{
int size() const { return N; }
};
constexpr bool f(const myarray<1> &arr)
{
return arr.size() == 10 || arr.size() == 11; // C3615 starting in Visual Studio 2017
}
이 문제를 해결하려면 함수를 array::size()
로 constexpr
선언하거나 한정자를 constexpr
제거 f
합니다.