// { dg-do compile { target c++20 } } // BasicFormatter requirements do not require a const parameter. #include struct X { }; template<> struct std::formatter { constexpr auto parse(format_parse_context& ctx) { return ctx.begin(); } // Takes non-const X& format_context::iterator format(X&, format_context& ctx) const { auto out = ctx.out(); *out++ = 'x'; return out; } }; X x; auto s = std::format("{}", x);