Update std::format check

This commit is contained in:
Jeremy 2023-09-21 21:21:13 -04:00
parent 08d831df5f
commit a10e27a720
No known key found for this signature in database
GPG Key ID: 19AA8270105E8EB4

View File

@ -8,8 +8,13 @@
#include <string> #include <string>
#include <vector> #include <vector>
#ifdef __cpp_lib_format #if __cplusplus >= 202002L
#include <format> #ifdef __has_include
#if __has_include(<format>)
#define CPPTRACE_STD_FORMAT
#include <format>
#endif
#endif
#endif #endif
#if defined(_WIN32) || defined(__CYGWIN__) #if defined(_WIN32) || defined(__CYGWIN__)
@ -249,20 +254,20 @@ namespace cpptrace {
}; };
} }
#ifdef __cpp_lib_format #if defined(CPPTRACE_STD_FORMAT) && defined(__cpp_lib_format)
template <> template <>
struct std::formatter<cpptrace::stacktrace_frame> : std::formatter<std::string> { struct std::formatter<cpptrace::stacktrace_frame> : std::formatter<std::string> {
auto format(cpptrace::stacktrace_frame frame, format_context& ctx) const { auto format(cpptrace::stacktrace_frame frame, format_context& ctx) const {
return formatter<string>::format(frame.to_string(), ctx); return formatter<string>::format(frame.to_string(), ctx);
} }
}; };
template <> template <>
struct std::formatter<cpptrace::stacktrace> : std::formatter<std::string> { struct std::formatter<cpptrace::stacktrace> : std::formatter<std::string> {
auto format(cpptrace::stacktrace trace, format_context& ctx) const { auto format(cpptrace::stacktrace trace, format_context& ctx) const {
return formatter<string>::format(trace.to_string(), ctx); return formatter<string>::format(trace.to_string(), ctx);
} }
}; };
#endif #endif
#endif #endif