/Zc:templateScope
(檢查範本參數陰影)
編譯程式 /Zc:templateScope
選項會針對範本參數的陰影,啟用標準C++行為檢查。
語法
/Zc:templateScope
[-
]
備註
C++ Standard 不允許在範本範圍內重複使用範本參數的名稱(或 陰影)作為另一個宣告。 編譯 /Zc:templateScope
程式選項會啟用這類陰影的錯誤檢查。
此選項 /Zc:templateScope
是 Visual Studio 2022 17.5 版 Preview 1 的新功能。 選項預設為關閉,即使程式代碼是使用 /permissive-
選項編譯的 ,或表示 /permissive-
的選項,例如 /std:c++20
或 /std:c++latest
。 若要啟用錯誤檢查,您必須明確地將 新增 /Zc:templateScope
至編譯程式命令行。 若要明確停用檢查,請使用 /Zc:templateScope-
選項。
範例
在下 /Zc:templateScope
,此範例程式代碼會產生錯誤:
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
*/
在 Visual Studio 中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。
在 [其他選項] 中,新增
/Zc:templateScope
或/Zc:templateScope-
。 選擇 [確定] 或 [套用] 以儲存變更。