Partilhar via


/Zc:templateScope (Verifique o sombreamento do parâmetro do modelo)

A /Zc:templateScope opção do compilador habilita verificações para o comportamento C++ padrão em torno do sombreamento de parâmetros de modelo.

Sintaxe

/Zc:templateScope[-]

Comentários

O C++ Standard 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 preview 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

  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. Em Opções adicionais, adicione /Zc:templateScope ou /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)