/Zc:templateScope
(Sprawdź cieniowanie parametrów szablonu)
Opcja /Zc:templateScope
kompilatora umożliwia sprawdzanie zachowania standardowego języka C++ wokół cieniowania parametrów szablonu.
Składnia
/Zc:templateScope
[-
]
Uwagi
Standard C++ nie zezwala na ponowne użycie nazwy parametru szablonu (lub cieniowania) dla innej deklaracji w zakresie szablonu. Opcja /Zc:templateScope
kompilatora umożliwia sprawdzenie błędów pod kątem takich cieniowania.
Opcja /Zc:templateScope
jest nowa w programie Visual Studio 2022 w wersji 17.5 (wersja zapoznawcza 1). Opcja jest domyślnie wyłączona nawet wtedy, gdy kod jest kompilowany przy użyciu /permissive-
opcji (lub opcji, która oznacza /permissive-
, na przykład /std:c++20
lub /std:c++latest
). Aby włączyć sprawdzanie błędów, należy jawnie dodać /Zc:templateScope
do wiersza polecenia kompilatora. Aby jawnie wyłączyć sprawdzanie, użyj /Zc:templateScope-
opcji .
Przykład
W obszarze /Zc:templateScope
ten przykładowy kod generuje błąd:
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
*/
Aby ustawić tę opcję kompilatora w programie Visual Studio
Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).
Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.
W obszarze Dodatkowe opcje dodaj
/Zc:templateScope
lub/Zc:templateScope-
. Wybierz przycisk OK lub Zastosuj , aby zapisać zmiany.
Zobacz też
/Zc
(Zgodność)
/permissive-
/std
(Określ wersję standardową języka)