Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
The /Zc:static_assert compiler option tells the compiler to evaluate static_assert calls with non-dependent test expressions when class or function templates are parsed.
Syntax
/Zc:static_assert
/Zc:static_assert-
Remarks
Starting with Visual Studio 17.10, /Zc:static_assert and /Zc:static_assert- have no effect. Both options are ignored to avoid breaking builds that use them. static_assert is now never evaluated when parsing class or function templates.
The /Zc:static_assert compiler option tells the compiler to evaluate a static_assert in the body of a function template or in the body of a class template member function when first parsed, if the test expression isn't dependent. If the non-dependent test expression is false, the compiler emits an error immediately. When the test expression is dependent, the static_assert isn't evaluated until the template is instantiated.
The /Zc:static_assert option is available starting in Visual Studio 2022 version 17.1. In earlier versions of Visual Studio, or if /Zc:static_assert- is specified, Visual Studio doesn't do dependent analysis if the static_assert is within the body of a function template or within the body of a member function of a class template. Instead, it only evaluates the static_assert when a template is instantiated.
The /permissive- option enables /Zc:static_assert, so it's on by default in projects that use /std:c++20 or /std:c++latest. The /Zc:static_assert- option must come after a /std:c++20, /std:c++latest, or /permissive- option on the command line.
If the compiler is in the default C++14 mode and /permissive- or /Zc:static_assert is specified, it uses /Zc:static_assert behavior. However, if it evaluates a static_assert in a template body, it also reports off-by-default warning C5254, "language feature 'terse static assert' requires compiler flag '/std:c++17'", since this behavior isn't required until C++17.
To set this compiler option in Visual Studio
Open the project's Property Pages dialog box. For details, see Set C++ compiler and build properties in Visual Studio.
Select the Configuration Properties > C/C++ > Command Line property page.
Add
/Zc:static_assertor/Zc:static_assert-to the Additional options: pane.