Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.