Partilhar via


/Zc:static_assert (tratamento estrito de static_assert)

A opção do compilador /Zc:static_assert informa ao compilador para avaliar chamadas static_assert com expressões de teste não dependentes quando modelos de classe ou função são analisados.

Sintaxe

/Zc:static_assert
/Zc:static_assert-

Comentários

A opção do compilador /Zc:static_assert ao compilador para avaliar um static_assert no corpo de um modelo de função ou no corpo de uma função de membro de modelo de classe quando analisado pela primeira vez, se a expressão de teste não for dependente. Se a expressão de teste não dependente não for false, o compilador emitirá um erro imediatamente. Quando a expressão de teste for dependente, o static_assert não será avaliado até que o modelo seja instanciado.

A opção /Zc:static_assert está disponível a partir do Visual Studio 2022 versão 17.1. Em versões anteriores do Visual Studio ou se /Zc:static_assert- for especificado, o Visual Studio não fará análise dependente se static_assert estiver no do corpo de um modelo de função ou no corpo de uma função membro de um modelo de classe. Em vez disso, avaliará o static_assert apenas quando um modelo for instanciado.

A opção /permissive- habilita /Zc:static_assert, portanto, é ativada por padrão em projetos que usam /std:c++20 ou /std:c++latest. A opção /Zc:static_assert- deve vir após uma opção /std:c++20, /std:c++latest ou /permissive- na linha de comando.

Se o compilador estiver no modo C++ 14 padrão e /permissive- ou /Zc:static_assert for especificado, ele usará o comportamento /Zc:static_assert. No entanto, se ele avaliar um static_assert em um corpo de modelo, também relatará o aviso desativado por padrão C5254, "o recurso de linguagem 'declaração de estática concisa' requer o sinalizador de compilador'/std:c++17'", já que esse comportamento não é necessário até C++17.

Para definir essa opção do compilador no Visual Studio

  1. Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.

  2. Selecione a página de propriedades Propriedades de Configuração>C/C++>Linha de Comando.

  3. Adicione /Zc:static_assert ou /Zc:static_assert- ao painel Opções adicionais:.

Confira também

/Zc (Conformidade)