Dela via


Kompilatorvarning C4984

"if constexpr" är ett C++17-språktillägg

Anmärkningar

Kompilatorn hittade ett if constexpr uttryck i kod som kompilerats med standardstandarden C++14. Det här uttrycket anges med början i C++17-standarden. Om du behöver C++11- eller C++14-kompatibilitet är det här uttrycket inte portabelt.

C4984 utfärdas som ett fel som standard, men det är undertryckbart. Om du vill aktivera det här uttrycket genom att kompilera koden som C++17 använder du /std:c++17 läge eller senare. Om du vill använda if constexpr uttrycket i kod som kompilerats för C++14 som ett Microsoft-tillägg kan du ignorera, inaktivera eller ändra varningsnivån för felmeddelandet. Du kan använda /wd4984 för att inaktivera C4984 eller /wN4984 för att aktivera den som en nivå N-varning i stället för ett fel. Eller använd #pragma warning(suppress:4984) före raden som orsakar varningen i källfilen.

Den här varningen är tillgänglig från och med Visual Studio 2017 version 15.3. Information om hur du inaktiverar varningar som introduceras i en viss kompilatorversion eller senare finns i Kompilatorvarningar efter kompilatorversion.

Example

Det här exemplet genererar C4984 och visar sätt att åtgärda det:

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