Format null std::exception_ptr as "none"

Change the null exception_ptr representation from "nullptr" to "none" to
convey the "no exception" state more clearly, and update the test.
This commit is contained in:
Victor Zverovich 2026-07-11 08:21:01 -07:00
parent 6dac6cad05
commit 9d13c41ce6
2 changed files with 4 additions and 8 deletions

View File

@ -651,16 +651,12 @@ struct formatter<
template <> struct formatter<std::exception_ptr> : formatter<std::exception> {
template <typename FormatContext>
auto format(const std::exception_ptr& ex_ptr, FormatContext& ctx) const
auto format(const std::exception_ptr& ep, FormatContext& ctx) const
-> decltype(ctx.out()) {
if (!ex_ptr) {
return detail::write(ctx.out(), string_view("nullptr"));
}
if (!ep) return detail::write(ctx.out(), string_view("none"));
try {
std::rethrow_exception(ex_ptr);
std::rethrow_exception(ep);
} catch (const std::exception& e) {
// Reuses the base formatter<std::exception>::format behavior perfectly
return formatter<std::exception>::format(e, ctx);
} catch (...) {
return detail::write(ctx.out(), string_view("unknown exception"));

View File

@ -415,7 +415,7 @@ TEST(std_test, exception_ptr) {
p2 = std::current_exception();
}
EXPECT_EQ(fmt::format("{}", p1), "nullptr");
EXPECT_EQ(fmt::format("{}", p1), "none");
EXPECT_EQ(fmt::format("{}", p2), "My Exception");
#if FMT_USE_RTTI