diff --git a/include/bits/soi-dbg.hpp b/include/bits/soi-dbg.hpp index 7da31f9..8e32188 100644 --- a/include/bits/soi-dbg.hpp +++ b/include/bits/soi-dbg.hpp @@ -198,16 +198,31 @@ template T &&identity(T &&t) { return std::forward(t); } #define dbg(...) dbg_macro::identity(__VA_ARGS__) #else +#if defined(__clang__) + #define SOI_ARG16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _15 #define SOI_IS_NONEMPTY(...) SOI_ARG16(1, ##__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) -#define SOI_DBG_IMPL_0() \ +#define SOI_DBG_IMPL_0() \ soi::detail::dbg_print_status(__FILE__, __LINE__, __func__) + #define SOI_DBG_IMPL_1(...) \ soi::detail::dbg_print((__VA_ARGS__), \ soi::detail::sanitized_type_name(), __FILE__, \ __LINE__, __func__, #__VA_ARGS__) +#else + +#define SOI_IS_NONEMPTY(...) __VA_OPT__(HAS) + +#define SOI_DBG_IMPL_() \ + soi::detail::dbg_print_status(__FILE__, __LINE__, __func__) +#define SOI_DBG_IMPL_HAS(...) \ + soi::detail::dbg_print((__VA_ARGS__), \ + soi::detail::sanitized_type_name(), __FILE__, \ + __LINE__, __func__, #__VA_ARGS__) + +#endif #define SOI_CAT(a, ...) PRIMITIVE_CAT(a, __VA_ARGS__) #define SOI_PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__