Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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
Abra a caixa de diálogo
Property Pages do projeto. Para obter detalhes, consulte Definir compilador C++ e criar propriedades no Visual Studio. Selecione a Configuration Properties>C/C++>Command Line página de propriedades.
Adicione
/Zc:static_assertou/Zc:static_assert-ao painel Opções adicionais:.