次の方法で共有


コンパイラ エラー C3615

constexpr 関数 'function' の結果が定数式になることはありません

注釈

関数 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 修飾子を削除します。