This meeting is starting in ~5 minutes.
Tom.
SG16 will hold a meeting tomorrow, Wednesday, April 23rd, at 19:30 UTC (timezone conversion).
If you need a .ics file to import into your calendar, you can download it here.
The agenda follows.
- P3655R0: std::zstring_view.
- P2873R3: Remove Deprecated locale category facets for Unicode from C++26.
P3655R0 seeks to standardize a variant of std::string_view that offers a null termination guarantee. This is not the first paper to propose such a type; nor the second, nor the third! Given the history of papers (see section 3 in the paper) that stalled for one reason or another, the motivation for SG16 review is to provide a (hopefully strong) recommendation to LEWG (one way or the other) regarding the utility of the proposed type from a group of text experts. This proposal was on the agenda for the last SG16 meeting, but was not discussed. There was some mailing list discussion that I urge participants to read before the meeting tomorrow. That discussion concerned:
- Support for std::char_traits.
- Support for conversion to std::string_view and implications for invariants, creation of temporaries, and life-time concerns.
P2873R3, well, a draft of it, was already forwarded by SG16 during the 2025-03-12 SG16 meeting. The only reason that it is back on the agenda again is to provide a recommendation whether all of the deprecated std::codecvt facets should be removed in C++26 or whether the ones that were deprecated during C++26 should be retained for removal in a future standard. There was a small amount of mailing list discussion regarding this last month. The status quo is:
- Introduced in C++11 (via N2238), deprecated in C++20 (via P0482R6), on track to be removed in C++26 (via P2873R3):
- codecvt<char16_t, char, mbstate_t>
- codecvt<char32_t, char, mbstate_t>
- codecvt_byname<char16_t, char, mbstate_t>
- codecvt_byname<char32_t, char, mbstate_t>
- Introduced in C++20 (via P0482R6), deprecated in C++26 (via LWG 3767), should be removed in C++26?
- codecvt<char16_t, char8_t, mbstate_t>
- codecvt<char32_t, char8_t, mbstate_t>
- codecvt_byname<char16_t, char8_t, mbstate_t>
- codecvt_byname<char32_t, char8_t, mbstate_t>
Note that the latter set that convert to/from char8_t should not have been added to the standard in the first place. UTF conversions are never locale dependent, nor is support for file streams of char8_t (or char16_t or char32_t) required by the standard. Nothing in the C++ standard library depends on these facets. Removal of these facets does remove the only UTF transcoding facility currently specified by the C++ standard, but such conversions are still possible using facilities from C (e.g., c8rtomb() followed by mbrtoc16(), at least for characters in the BMP).
Tom.