From 6f0f0d30b23caf71931f8d22ebb127b94995e2ab Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Fri, 12 May 2023 19:10:19 -0500 Subject: [PATCH] fix formatter --- include/fmt/core.h | 2 +- test/format-test.cc | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/fmt/core.h b/include/fmt/core.h index 4d50d383..7efcb71d 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -2693,7 +2693,7 @@ struct formatter \ struct formatter : formatter { \ template \ - auto format(const Type& val, FormatContext& ctx) const \ + auto format(Type const& val, FormatContext& ctx) const \ -> decltype(ctx.out()) { \ return formatter::format(static_cast(val), ctx); \ } \ diff --git a/test/format-test.cc b/test/format-test.cc index fb63f149..2386299a 100644 --- a/test/format-test.cc +++ b/test/format-test.cc @@ -2251,3 +2251,19 @@ TEST(format_test, format_named_arg_with_locale) { } #endif // FMT_STATIC_THOUSANDS_SEPARATOR + +struct convertible_to_nonconst_cstring { + operator char*() const { + static char c[]="bar"; + return c; + } +}; + +FMT_BEGIN_NAMESPACE +template <> struct formatter : formatter { +}; +FMT_END_NAMESPACE + +TEST(format_test, formatter_nonconst_char) { + EXPECT_EQ(fmt::format("{}", convertible_to_nonconst_cstring()), "bar"); +}