/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
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.
Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.
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)
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour