static_assert
declaration (since C++11)
Performs compile-time assertion checking.
Contents |
[edit] Syntax
static_assert( bool-constexpr , unevaluated-string )
|
(1) | ||||||||
static_assert( bool-constexpr )
|
(2) | (since C++17) | |||||||
static_assert( bool-constexpr , constant-expression )
|
(3) | (since C++26) | |||||||
Declares a static assertion. If the assertion fails, the program is ill-formed, and a diagnostic error message may be generated.
[edit] Explanation
bool-constexpr | - |
| ||||
unevaluated-string | - | an unevaluated string literal that will appear as the error message | ||||
constant-expression | - | a constant expression msg satisfying all following conditions:
|
A static_assert declaration may appear at namespace and block scope (as a block declaration) and inside a class body (as a member declaration).
If bool-constexpr is well-formed and evaluates to true, or is evaluated in the context of a template definition and the template is uninstantiated, this declaration has no effect. Otherwise a compile-time error is issued, and the user-provided message, if any, is included in the diagnostic message.
The text of the user-provided message is determined as follows:
- If the message matches the syntactic requirements of unevaluated-string, the text of the message is the text of the unevaluated-string.
|
(since C++26) |
[edit] Notes
The standard does not require a compiler to print the verbatim text of error message, though compilers generally do so as much as possible.
Since the error message has to be a string literal, it cannot contain dynamic information or even a |