Compilerwarnung C4984
"if constexpr" ist eine C++17-Spracherweiterung
Hinweise
Der Compiler hat einen if constexpr
Ausdruck im Code gefunden, der mit dem Standardstandard C++14 kompiliert wurde. Dieser Ausdruck wird beginnend mit dem C++17-Standard angegeben. Wenn Sie C++11- oder C++14-Kompatibilität benötigen, ist dieser Ausdruck nicht portierbar.
C4984 wird standardmäßig als Fehler ausgegeben, ist jedoch unterdrückt. Um diesen Ausdruck zu aktivieren, indem Sie Ihren Code als C++17 kompilieren, verwenden Sie /std:c++17
den Modus oder höher. Um den if constexpr
Ausdruck im für C++14 kompilierten Code als Microsoft-Erweiterung zu verwenden, können Sie die Warnstufe der Fehlermeldung unterdrücken, deaktivieren oder ändern. Sie können /wd4984 zum Deaktivieren von C4984 oder /wN4984 verwenden, um sie als Warnung der Ebene N anstelle eines Fehlers zu aktivieren. Oder verwenden Sie #pragma warning(suppress:4984)
vor der Zeile, die die Warnung in der Quelldatei verursacht.
Diese Warnung ist ab Visual Studio 2017, Version 15.3, verfügbar. Informationen zum Deaktivieren von Warnungen, die in einer bestimmten Compilerversion oder höher eingeführt wurden, finden Sie unter Compilerwarnungen nach Compilerversion.
Beispiel
In diesem Beispiel wird C4984 generiert, und es werden Möglichkeiten zum Beheben gezeigt:
// C4984.cpp
// compile with: cl /EHsc C4984.cpp
#include <iostream>
int main()
{
constexpr bool compile_time = true;
// Uncomment the following line or use /std:c++17 to fix
// #pragma warning(suppress:4984)
if constexpr (compile_time)
{
std::cout << "compile_time is true";
}
else
{
std::cout << "compile_time is false";
}
}