/Zc:templateScope
(Controllare l'ombreggiatura dei parametri del modello)
L'opzione /Zc:templateScope
del compilatore abilita i controlli del comportamento C++ standard per nascondere i parametri del modello.
Sintassi
/Zc:templateScope
[-
]
Osservazioni:
Lo standard C++ non consente il riutilizzo del nome o dell'ombreggiatura di un parametro di modello per un'altra dichiarazione all'interno dell'ambito del modello. L'opzione /Zc:templateScope
del compilatore abilita un controllo degli errori per tale ombreggiatura.
L'opzione /Zc:templateScope
è una novità di Visual Studio 2022 versione 17.5 preview 1. L'opzione è disattivata per impostazione predefinita anche quando il codice viene compilato usando l'opzione /permissive-
(o un'opzione che implica /permissive-
, ad esempio /std:c++20
o /std:c++latest
). Per abilitare il controllo degli errori, è necessario aggiungere /Zc:templateScope
in modo esplicito alla riga di comando del compilatore. Per disabilitare in modo esplicito il controllo, usare l'opzione /Zc:templateScope-
.
Esempio
In /Zc:templateScope
questo codice di esempio viene generato un errore:
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
*/
Per impostare questa opzione del compilatore in Visual Studio
Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.
Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.
In Opzioni aggiuntive aggiungere
/Zc:templateScope
o/Zc:templateScope-
. Scegliere OK o Applica per salvare le modifiche.
Vedi anche
/Zc
(Conformità)
/permissive-
/std
(Specificare la versione standard della lingua)