Delen via


Compilerfout C3615

constexpr functie 'functie' kan niet resulteren in een constante uitdrukking

Opmerkingen

De functie kan niet worden geƫvalueerd als constexpr tijdens de compilatietijd. Om te zijn constexpr, kan een functie alleen andere constexpr functies aanroepen.

Example

Visual Studio 2017 genereert een fout wanneer de linkeroperand van een voorwaardelijk evaluerende bewerking niet geldig is in een constexpr context. De volgende code wordt gecompileerd in Visual Studio 2015, maar niet in 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
}

Als u dit probleem wilt oplossen, declareert u de array::size() functie als constexpr of verwijdert u de constexpr kwalificatie van f.