共用方式為


編譯器錯誤 C3615

constexpr 函式 'function' 無法產生常數運算式

函式無法在編譯時期評估為 constexprconstexpr為,函式只能呼叫其他constexpr函式。

範例

當條件式評估作業的左側操作數在內容中 constexpr 無效時,Visual Studio 2017 會正確引發錯誤。 下列程式代碼會在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 或從 f中移除constexpr限定符。