共用方式為


/Zc:static_assert (嚴格static_assert處理)

編譯 /Zc:static_assert 程式選項會告訴編譯程式在剖析類別或函式範本時,使用非相依測試表達式評估 static_assert 呼叫。

語法

/Zc:static_assert
/Zc:static_assert-

備註

從 Visual Studio 17.10 開始,/Zc:static_assert/Zc:static_assert- 沒有任何作用。 系統會忽略這兩個選項,以避免中斷使用這些選項的組建。 剖析類別或函式範本時,現在永遠不會評估 static_assert

如果測試表示式不相依,編譯 /Zc:static_assert 程式選項會告訴編譯程式在函式範本樣本主體或類別範本成員函式主體中評估 static_assert 。 如果非相依測試表示式 false,編譯程式會立即發出錯誤。 當測試表示式相依時, static_assert 在具現化範本之前,不會評估 。

此選項 /Zc:static_assert 可從 Visual Studio 2022 17.1 版開始使用。 在舊版的Visual Studio中,或 /Zc:static_assert- 如果已指定,則Visual static_assert Studio不會在函式範本的主體內或類別範本的成員函式主體內執行相依分析。 相反地,它只會在具現化範本時評估 static_assert

選項 /permissive- 會啟用 /Zc:static_assert,因此預設會在使用 /std:c++20/std:c++latest的項目中開啟。 選項/Zc:static_assert-必須位於命令列上的、 /std:c++20/std:c++latest 選項之後/permissive-

如果編譯程式處於預設C++14 模式,或/permissive-/Zc:static_assert已指定,則會使用/Zc:static_assert行為。 不過,如果它在範本主體中評估 static_assert ,它也會報告預設警告 C5254:「語言功能 'terse static assert' 需要編譯程式旗標 '/std:c++17'」,因為此行為在C++17 之前不需要。

在 Visual Studio 中設定這個編譯器選項

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

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

  3. 將 或 /Zc:static_assert 新增/Zc:static_assert-至 [其他選項:] 窗格。

另請參閱

/Zc (一致性)