Partilhar via


Aviso do compilador C4984

'if constexpr' é uma extensão de linguagem C++17

Observações

O compilador encontrou uma if constexpr expressão no código compilado usando o padrão C++14. Esta expressão é especificada a partir do padrão C++17. Se você precisar de compatibilidade com C++11 ou C++14, essa expressão não será portátil.

C4984 é emitido como um erro por padrão, mas é supressível. Para habilitar essa expressão compilando seu código como C++17, use /std:c++17 o modo ou posterior. Para usar a if constexpr expressão no código compilado para C++14 como uma extensão da Microsoft, você pode suprimir, desabilitar ou alterar o nível de aviso da mensagem de erro. Você pode usar /wd4984 para desativar C4984 ou /wN4984 para habilitá-lo como um aviso de nível N em vez de um erro. Ou, use #pragma warning(suppress:4984) antes da linha que causa o aviso no arquivo de origem.

Este aviso está disponível a partir do Visual Studio 2017 versão 15.3. Para obter informações sobre como desativar avisos introduzidos em uma versão específica do compilador ou posterior, consulte Avisos do compilador por versão do compilador.

Example

Este exemplo gera C4984 e mostra maneiras de corrigi-lo:

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