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";
    }
}