#pragma once namespace euler { [[noreturn]] void assert_failed( const char *file, const char *function, int line, const char *condition); } #ifdef NDEBUG #define assert(condition) ((void)0) #else #define assert(condition) ((condition) ? ((void)0) : \ euler::assert_failed(__FILE__, __func__, __LINE__, #condition)) #endif