/Zc:templateScope
(檢查範本參數陰影)
編譯 /Zc:templateScope
程式選項會針對範本參數的陰影,啟用標準 C++ 行為的檢查。
語法
/Zc:templateScope
[-
]
備註
C++ 標準不允許在範本範圍內重複使用範本參數的名稱(或 陰影 )作為另一個宣告。 編譯 /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-
。 選擇 [確定 ] 或 [ 套用 ] 以儲存您的變更。
另請參閱
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: