https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111052
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2023-08-17
Ever confirmed|0 |1
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Alternatively, we could add a special case to ranges::copy so that copying a
range to a back_insert_iterator<string> uses string::append instead of writing
one element at a time.
That would benefit more than just std::format_to. But we might still want to do
extract a back_insert_iterator<string>'s string into a _Seq_sink<string>,
because that would allow us to write directly to the string instead of
buffering and then copying to it on overflow.
We should also make ranges::copy implement the std::copy optimization for
copying to ostreambuf_iterator, which is an important performance enhancement.
That will benefit:
std::format_to(std::ostreambuf_iterator<char>(std::cout), "");
The _Iter_sink<_CharT, _Iter> could recognise an ostreambuf_iterator and use
std::copy, but we should really just make ranges::copy do those optimizations.