Defined in header
#define assert(condition) ((void)0)
The definition of the macro
assert depends on another macro, NDEBUG, which is not defined by the standard library.
If NDEBUG is defined as a macro name at the point in the source code where
<assert.h> is included, then
assert does nothing.
If NDEBUG is not defined, then
assert checks if its argument (which must have scalar type) compares equal to zero. If it does,
assert outputs implementation-specific diagnostic information on the standard error output and calls abort(). The diagnostic information is required to include the text of
expression, as well as the values of the standard macros __FILE__, __LINE__, and the standard variable __func__.
|condition||-||expression of scalar type|
 Return value
output with NDEBUG not defined: a.out: main.cpp:10: main: Assertion `x >= 0.0' failed. output with NDEBUG defined: sqrt(x) = -nan
 See also
| causes abnormal program termination (without cleaning up)
C++ documentation for assert