Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A /Zc:templateScope opção do compilador permite verificações do comportamento padrão do C++ em torno do sombreamento de parâmetros de modelo.
Sintaxe
/Zc:templateScope[-]
Comentários
O padrão C++ não permite a reutilização do nome (ou sombreamento) de um parâmetro de modelo para outra declaração dentro do escopo do modelo. A /Zc:templateScope opção do compilador habilita uma verificação de erro para esse sombreamento.
A /Zc:templateScope opção é nova no Visual Studio 2022 versão 17.5 versão prévia 1. A opção está desativada por padrão, mesmo quando o código é compilado usando a /permissive- opção (ou uma opção que implica /permissive-, como /std:c++20 ou /std:c++latest). Para habilitar a verificação de erros, você deve adicionar /Zc:templateScope explicitamente à linha de comando do compilador. Para desativar explicitamente a verificação, use a /Zc:templateScope- opção.
Exemplo
Em /Zc:templateScope, este código de exemplo produz um erro:
template<typename T>
void f(T&& t) {
int T = 13;
}
/* Output:
t.cpp(3): error C7527: 'T': a template parameter name cannot be reused within its scope
*/
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.
Em Opções adicionais, adicione
/Zc:templateScopeou/Zc:templateScope-. Escolha OK ou Aplicar para salvar as alterações.
Confira também
/Zc (Conformidade)
/permissive-
/std (Especificar a versão padrão da linguagem)