/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
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.
Selecione a página de propriedades Propriedades de Configuração>C/C++>Linha de Comando.
Adicione
/Zc:static_assert
ou/Zc:static_assert-
ao painel Opções adicionais:.