Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
die constexpr-Funktion „function“ muss einen konstanten Ausdruck ergeben
Bemerkungen
Die Funktion konnte zur Kompilierungszeit nicht ausgewertet constexpr werden.
constexprEine Funktion kann nur andere constexpr Funktionen aufrufen.
Beispiel
Visual Studio 2017 löst einen Fehler aus, wenn der linke Operand eines bedingt ausgewerteten Vorgangs in einem constexpr Kontext ungültig ist. Der folgende Code kompiliert in Visual Studio 2015, jedoch nicht 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
}
Um dieses Problem zu beheben, deklarieren Sie die array::size() Funktion entweder als constexpr Qualifizierer, oder entfernen Sie den constexpr Qualifizierer aus f.