Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
Tento příklad vygeneruje C4984 a ukazuje způsoby, jak ho 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";
}
}