共用方式為


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

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

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

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

另請參閱

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