Partilhar via


/Zc:static_assert (manuseamento rigoroso static_assert)

A opção /Zc:static_assert compilador diz ao compilador para avaliar static_assert chamadas 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 partir do Visual Studio 17.10, /Zc:static_assert e /Zc:static_assert- não têm efeito. Ambas as opções são ignoradas para evitar quebrar compilações que as usam. static_assert nunca é avaliado ao analisar modelos de classe ou função.

A opção /Zc:static_assert compilador diz 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 estiver false, o compilador emitirá um erro imediatamente. Quando a expressão de teste é dependente, o static_assert não é 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 o static_assert estiver dentro do corpo de um modelo de função ou dentro do corpo de uma função membro de um modelo de classe. Em vez disso, ele só avalia o static_assert quando um modelo é instanciado.

A opção /permissive- habilita /Zc:static_assert, portanto, ela está 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++latestou /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á /Zc:static_assert comportamento. No entanto, se ele avalia um static_assert em um corpo de modelo, ele também relata o aviso off-by-default C5254, "o recurso de linguagem 'terse static assert' requer o sinalizador do compilador '/std:c++17'", uma vez que esse comportamento não é necessário até C++17.

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

  1. Abra a caixa de diálogo Property Pages do projeto. Para obter detalhes, consulte Definir compilador C++ e criar propriedades no Visual Studio.

  2. Selecione a Configuration Properties>C/C++>Command Line página de propriedades.

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

Ver também

/Zc (Conformidade)