Partager via


/Zc:templateScope (Vérifier l’ombre des paramètres du modèle)

L’option /Zc:templateScope du compilateur active les case activée pour le comportement C++ Standard autour de l’ombre des paramètres de modèle.

Syntaxe

/Zc:templateScope[-]

Notes

La norme C++ n’autorise pas la réutilisation du nom d’un paramètre de modèle (ou de l’ombre) pour une autre déclaration dans l’étendue du modèle. L’option /Zc:templateScope du compilateur active une erreur case activée pour ce type d’ombre.

L’option /Zc:templateScope est nouvelle dans Visual Studio 2022 version 17.5 preview 1. L’option est désactivée par défaut même lorsque le code est compilé à l’aide de l’option /permissive- (ou d’une option qui implique /permissive-, par /std:c++20 exemple)./std:c++latest Pour activer l’erreur case activée, vous devez ajouter /Zc:templateScope explicitement à la ligne de commande du compilateur. Pour désactiver explicitement le case activée, utilisez l’option/Zc:templateScope-.

Exemple

Sous /Zc:templateScope, cet exemple de code génère une erreur :

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
*/

Pour définir cette option de compilateur dans Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.

  2. Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.

  3. Dans d’autres options, ajoutez /Zc:templateScope ou /Zc:templateScope-. Choisissez OK ou Appliquer pour enregistrer vos modifications.

Voir aussi

/Zc (Conformité)
/permissive-
/std (Spécifier la version du standard du langage)