Date: Tue, 30 Apr 2024 14:32:19 +0300
Corentin Jabot wrote:
> Very rough draft https://isocpp.org/files/papers/D3258R0.pdf
Looks good. I'm however not sure that it makes sense to format
char8_t (char16_t is borderline.)
Or maybe that's only intended for {:?} ?
> What about iostream?
> This is a story for another paper (One that an enthusiastic
> reader is encouraged to write!)
Here's that paper:
Insert at the end of https://eel.is/c++draft/ostream.inserters.character
the following:
template<class charT, class traits>
basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& out, const char8_t* s);
template<class charT, class traits>
basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& out, const char16_t* s);
template<class traits>
basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>& out, const char32_t* s);
Preconditions: s is not a null pointer.
Effects:
Behaves like a formatted inserter (as described in [ostream.formatted.reqmts]) of `out`.
Creates a character sequence `seq` holding the transcoded representation
of s [format.string.transcode].
Determines padding for `seq` as described in [ostream.formatted.reqmts]. Inserts `seq` into
`out`. Calls `width(0)`.
Returns:
`out`.
> Very rough draft https://isocpp.org/files/papers/D3258R0.pdf
Looks good. I'm however not sure that it makes sense to format
char8_t (char16_t is borderline.)
Or maybe that's only intended for {:?} ?
> What about iostream?
> This is a story for another paper (One that an enthusiastic
> reader is encouraged to write!)
Here's that paper:
Insert at the end of https://eel.is/c++draft/ostream.inserters.character
the following:
template<class charT, class traits>
basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& out, const char8_t* s);
template<class charT, class traits>
basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& out, const char16_t* s);
template<class traits>
basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>& out, const char32_t* s);
Preconditions: s is not a null pointer.
Effects:
Behaves like a formatted inserter (as described in [ostream.formatted.reqmts]) of `out`.
Creates a character sequence `seq` holding the transcoded representation
of s [format.string.transcode].
Determines padding for `seq` as described in [ostream.formatted.reqmts]. Inserts `seq` into
`out`. Calls `width(0)`.
Returns:
`out`.
Received on 2024-04-30 11:32:26