Dela via


Kompilatorfel C3615

constexpr-funktionen "function" kan inte resultera i ett konstant uttryck

Anmärkningar

Funktionsfunktionen kunde inte utvärderas som constexpr vid kompileringstillfället. För att vara constexprkan en funktion bara anropa andra constexpr funktioner.

Example

Visual Studio 2017 genererar korrekt ett fel när den vänstra operanden för en villkorlig utvärderingsåtgärd inte är giltig i en constexpr kontext. Följande kod kompileras i Visual Studio 2015 men inte i 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
}

För att åtgärda det här problemet, deklarera antingen array::size()-funktionen som constexpr eller ta bort constexpr-kvalificeraren från f.