[assertions] (original) (raw)
19 Diagnostics library [diagnostics]
19.3.1 General [assertions.general]
19.3.2 Header synopsis [cassert.syn]
19.3.3 The assert macro [assertions.assert]
19.3.1 General [assertions.general]
The header provides a macro for documenting C++ program assertions and a mechanism for disabling the assertion checks through defining the macro NDEBUG.
19.3.2 Header synopsis [cassert.syn]
#define assert(...) see below
19.3.3 The assert macro [assertions.assert]
If NDEBUG is defined as a macro name at the point in the source file where <cassert> is included, the assert macro is defined as#define assert(...) ((void)0)
Otherwise, the assert macro puts a diagnostic test into programs; it expands to an expression of type void which has the following effects:
- __VA_ARGS__ is evaluated and contextually converted to bool.
- If the evaluation yields true there are no further effects.
- Otherwise, the assert macro's expression creates a diagnostic on the standard error stream (ISO/IEC 9899:2024, 7.23.3) in animplementation-defined format and calls abort().
The diagnostic contains #__VA_ARGS__ and information on the name of the source file, the source line number, and the name of the enclosing function (such as provided by source_location​::​current()).
The macro assert is redefined according to the current state of NDEBUG each time that<cassert> is included.