https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113366
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- Odd. We get the type/value mismatch from here: template<typename _Tp> using __maybe_const_t = __conditional_t<__format::__formattable_with<_Tp, _Context>, const _Tp, _Tp>; Where the boolean condition is: template<typename _Tp, typename _Context, typename _Formatter = typename _Context::template formatter_type<remove_const_t<_Tp>>, typename _ParseContext = basic_format_parse_context<typename _Context::char_type>> concept __formattable_with = semiregular<_Formatter> && requires (const _Formatter __cf, _Tp&& __t, _Context __fc) { { __cf.format(__t, __fc) } -> same_as<typename _Context::iterator>; }; That seems like a valid concept. Is something in the -fconcepts-ts code tripping up?