/Zc:templateScope
(Kontrola stínování parametrů šablony)
Možnost /Zc:templateScope
kompilátoru umožňuje kontrolovat chování standardního jazyka C++ v případě stínování parametrů šablony.
Syntaxe
/Zc:templateScope
[-
]
Poznámky
Standard C++ neumožňuje opakované použití názvu parametru šablony (nebo stínování) pro jinou deklaraci v rámci oboru šablony. Možnost /Zc:templateScope
kompilátoru povolí kontrolu takového stínování chyb.
Tato /Zc:templateScope
možnost je nová v sadě Visual Studio 2022 verze 17.5 Preview 1. Tato možnost je ve výchozím nastavení vypnutá, i když je kód zkompilován pomocí /permissive-
možnosti (nebo možnosti, která znamená /permissive-
, například /std:c++20
nebo /std:c++latest
). Chcete-li povolit kontrolu chyb, musíte explicitně přidat /Zc:templateScope
do příkazového řádku kompilátoru. Pokud chcete tuto kontrolu explicitně zakázat, použijte tuto /Zc:templateScope-
možnost.
Příklad
V části /Zc:templateScope
tento vzorový kód vytvoří chybu:
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
*/
Nastavení této možnosti kompilátoru v sadě Visual Studio
Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.
Vyberte stránku vlastností příkazového řádku C/C++>Vlastnosti>konfigurace.
V dalších možnostech přidejte
/Zc:templateScope
nebo/Zc:templateScope-
. Změny uložíte kliknutím na OK nebo Použít .
Viz také
/Zc
(Shoda)
/permissive-
/std
(Určení standardní verze jazyka)