/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:templateScopequesto 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

  1. Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.

  2. Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.

  3. 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)