25#if defined(NDEBUG) && !GUANAQO_VERIFY_ASSUMPTIONS
26#if __has_cpp_attribute(assume) >= 202207L
27#define GUANAQO_ASSUME(x) [[assume(x)]]
30#if __cpp_lib_unreachable >= 202202L
31#define GUANAQO_ASSUME(x) \
36#elif defined(__GNUC__)
37#define GUANAQO_ASSUME(x) \
40 __builtin_unreachable(); \
42#elif defined(_MSC_VER)
43#define GUANAQO_ASSUME(x) __assume(x)
46#define GUANAQO_DEBUG_ASSERT(x) \
52#ifndef GUANAQO_DEBUG_ASSERT
53#define GUANAQO_DEBUG_ASSERT(x) \
56 throw std::logic_error("Assertion " #x " failed (" __FILE__ \
57 ":" GUANAQO_STRINGIFY(__LINE__) ")"); \
61#define GUANAQO_ASSERT(x) \
64 throw std::logic_error("Assertion " #x " failed (" __FILE__ \
65 ":" GUANAQO_STRINGIFY(__LINE__) ")"); \
69#define GUANAQO_ASSUME(x) GUANAQO_ASSERT(x)
Stringify and token concatenation helpers.