共用方式為


/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 中設定這個編譯器選項

  1. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  2. 選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。

  3. 在 [其他選項] 中,新增 /Zc:templateScope/Zc:templateScope-。 選擇 [確定] 或 [套用] 以儲存變更。

另請參閱

/Zc (一致性)
/permissive-
/std (指定語言標準版本)