다음을 통해 공유


컴파일러 오류 C3615

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합니다.