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 boolconstexpr returns true, this declaration has no effect. C:/ Qt / Qt5. 0 / 5.7 / mingw5332 / include / QtCore / qglobal. H: 746: 47: error: static assertion failed: Signal and slot arguments are not compatible. #define QSTATICASSERTX(Condition, Message) staticassert(bool(Condition), Message).
C++Static Assertion Failed Signal And Slot Arguments Are Not Compatible In Computer
Language | ||||
Standard Library Headers | ||||
Freestanding and hosted implementations | ||||
Named requirements | ||||
Language support library | ||||
Concepts library(C++20) | ||||
Diagnostics library | ||||
Utilities library | ||||
Strings library | ||||
Containers library | ||||
Iterators library | ||||
Ranges library(C++20) | ||||
Algorithms library | ||||
Numerics library | ||||
Input/output library | ||||
Localizations library | ||||
Regular expressions library(C++11) | ||||
Atomic operations library(C++11) | ||||
Thread support library(C++11) | ||||
Filesystem library(C++17) | ||||
Technical Specifications |
|
|
Performs compile-time assertion checking
[edit]Syntax
static_assert ( bool_constexpr, message) | (since C++11) |
static_assert ( bool_constexpr) | (since C++17) |
[edit]Explanation
bool_constexpr | - | a contextually converted constant expression of type bool |
message | - | optional (since C++17)string literal that will appear as compiler error if bool_constexpr is false |
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 returns true, this declaration has no effect. Otherwise a compile-time error is issued, and the text of message, if any, is included in the diagnostic message.
message can be omitted. | (since C++17) |
[edit]Note
Static Assertion Failed Signal And Slot Arguments Are Not Compatible Games
Since message has to be a string literal, it cannot contain dynamic information or even a constant expression that is not a string literal itself. In particular, it cannot contain the name of the template type argument.
[edit]Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
CWG 2039 | C++11 | only the expression before conversion is required to be constant | the conversion must also be valid in a constant expression |
[edit]Example
Possible output:
[edit]See also
C documentation for static_assert |