Udostępnij za pośrednictwem


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

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

  2. Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.

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