Upozornění kompilátoru C4984
Pokud constexpr je rozšíření jazyka C++17
Poznámky
Kompilátor našel if constexpr
výraz v kódu zkompilovaném pomocí výchozího standardu C++14. Tento výraz je určen počínaje standardem C++17. Pokud požadujete kompatibilitu C++11 nebo C++14, tento výraz není přenosný.
C4984 se ve výchozím nastavení vydává jako chyba, ale je potlačitelná. Pokud chcete tento výraz povolit kompilací kódu jako C++17, použijte /std:c++17
režim nebo novější. Pokud chcete výraz použít if constexpr
v kódu zkompilovaném pro C++14 jako rozšíření Microsoftu, můžete potlačit, zakázat nebo změnit úroveň upozornění chybové zprávy. Pomocí příkazu /wd4984 můžete zakázat C4984 nebo /wN4984 a povolit ho jako upozornění na úroveň N místo chyby. Nebo použijte #pragma warning(suppress:4984)
před řádkem, který způsobí upozornění ve zdrojovém souboru.
Toto upozornění je dostupné od sady Visual Studio 2017 verze 15.3. Informace o tom, jak zakázat upozornění zavedená v konkrétní verzi kompilátoru nebo novější, naleznete v tématu Upozornění kompilátoru podle verze kompilátoru.
Příklad
Tato ukázka vygeneruje C4984 a ukazuje způsoby, jak ji opravit:
// 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";
}
}