[&]<
typename T>(T
item) { \
if constexpr (std::is_same_v<void*, std::remove_cv_t< \
std::remove_reference_t<decltype(*item)>>>) { \
dc_void_const_ptr_debug(
item, FMT, STREAM); \
} else if constexpr (std::is_same_v<void const*, \
std::remove_cv_t< \
std::remove_reference_t<decltype(*item)>>>) { \
dc_void_ptr_debug(
item, FMT, STREAM); \
} else if constexpr (std::is_same_v<char*, std::remove_cv_t<std::remove_reference_t< \
dc_string_debug(
item, FMT, STREAM); \
} else if constexpr (std::is_same_v<char const*, \
std::remove_cv_t< \
std::remove_reference_t<decltype(*item)>>>) { \
dc_string_const_debug(
item, FMT, STREAM); \
} else { \
DC_NO_DEBUG(
item, FMT, STREAM); \
} \
#define _DC_DEFAULT_DEBUG_CASE(TYPE, _, FMT, STREAM)
102 #define _DC_DEFAULT_DEBUG(SELF, FMT, STREAM) \
103 [&]<typename T>(T item) { \
104 DC_STD_REFLECT(_DC_DEFAULT_DEBUG_CASE, FMT, STREAM) \
105 DC_FLOAT_REFLECT(_DC_DEFAULT_DEBUG_CASE, FMT, STREAM) \
106 if constexpr (std::is_same_v<void*, std::remove_cv_t< \
107 std::remove_reference_t<decltype(*item)>>>) { \
108 dc_void_const_ptr_debug(item, FMT, STREAM); \
109 } else if constexpr (std::is_same_v<void const*, \
110 std::remove_cv_t< \
111 std::remove_reference_t<decltype(*item)>>>) { \
112 dc_void_ptr_debug(item, FMT, STREAM); \
113 } else if constexpr (std::is_same_v<char*, std::remove_cv_t<std::remove_reference_t< \
114 decltype(*item)>>>) { \
115 dc_string_debug(item, FMT, STREAM); \
116 } else if constexpr (std::is_same_v<char const*, \
117 std::remove_cv_t< \
118 std::remove_reference_t<decltype(*item)>>>) { \
119 dc_string_const_debug(item, FMT, STREAM); \
120 } else { \
121 DC_NO_DEBUG(item, FMT, STREAM); \
122 } \
123 }(SELF)