libstdc++: Add fast path for std::format("{}", x) [PR110801]
commit41a5ea4cab2c59f9911325281f7df1d3ae846d48
authorJonathan Wakely <jwakely@redhat.com>
Tue, 15 Aug 2023 21:43:41 +0000 (15 22:43 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Sat, 18 Nov 2023 21:22:32 +0000 (18 21:22 +0000)
tree95e0089d175323acf7e75ccd5a4b76b03ff8a66a
parent84c5dede83de84e0a06b018103be0b9ede5b04a1
libstdc++: Add fast path for std::format("{}", x) [PR110801]

This optimizes the simple case of formatting a single string, integer
or bool, with no format-specifier (so no padding, alignment, alternate
form etc.)

libstdc++-v3/ChangeLog:

PR libstdc++/110801
* include/std/format (_Sink_iter::_M_reserve): New member
function.
(_Sink::_Reservation): New nested class.
(_Sink::_M_reserve, _Sink::_M_bump): New virtual functions.
(_Seq_sink::_M_reserve, _Seq_sink::_M_bump): New virtual
overrides.
(_Iter_sink<O, ContigIter>::_M_reserve): Likewise.
(__do_vformat_to): Use new functions to optimize "{}" case.
libstdc++-v3/include/std/format