Created on 2024-01-05.00:00:00 last changed 1 week ago
Additional notes (May, 2025)
See also P3727R0.
Possible resolution:
Change in Clause 2 [intro.refs] paragraph 1.10 as follows:
Add a paragraph before 4.1.1 [intro.compliance.general] paragraph 8 as follows:
A conforming implementation may implement an implementation-defined version of the Unicode Standard that is a later version than the one referenced in Clause 2 [intro.refs].
A conforming implementation may have extensions (including additional library functions), provided they do not alter the behavior of any well-formed program.
Remove E.2.2 [uaxid.def.rfmt]:
E.2.2 1 R1a Restricted format characters [uaxid.def.rfmt]
If an implementation of UAX #31 wishes to allow format characters such as u+200d zero width joiner or u+200c zero width non-joiner it must define a profile allowing them, or describe precisely which combinations are permitted.
C++ does not allow format characters in identifiers, so this does not apply.
Additional notes (March, 2024)
More drafting to rebase Annex E on Unicode 15.1 is needed.
CWG 2024-01-19
CWG took note of the issue. No objections were raised regarding the suggested direction.
EWG 2024-03-18
Allow implementation-defined Unicode version, but require at least version 15.1.
Possible resolution [SUPERSEDED]:
Change in Clause 2 [intro.refs] paragraph 1.10 as follows:
Add a paragraph before 4.1.1 [intro.compliance.general] paragraph 8 as follows:
A conforming implementation may implement an implementation-defined version of the Unicode Standard that is a later version than the one referenced in Clause 2 [intro.refs].
A conforming implementation may have extensions (including additional library functions), provided they do not alter the behavior of any well-formed program.
Additional notes (January, 2024)
Forwarded to SG16 and LWG by decision of the CWG chair, via paper issue 1736.
SG16 2024-01-10
SG16 has consensus to have a dated reference to Unicode in the "Normative references", indicating a minimum version, and add permission to implement an implementation-defined later version.
Possible resolution [SUPERSEDED]:
Change in Clause 2 [intro.refs] paragraph 1.10 as follows:
Add a paragraph before 4.1.1 [intro.compliance.general] paragraph 8 as follows:
A conforming implementation may implement an implementation-defined version of the Unicode Standard that is a later version than the one referenced in Clause 2 [intro.refs].
A conforming implementation may have extensions (including additional library functions), provided they do not alter the behavior of any well-formed program.
Clause 2 [intro.refs] paragraph 1.10 uses an undated reference for the Unicode standard, meaning that a published (and otherwise frozen) standard for C++ (e.g. C++23) will implicitly refer to a new revision of the Unicode standard the moment such is issued:
... For undated references, the latest edition of the referenced document (including any amendments) applies.
- ...
- The Unicode Consortium. The Unicode Standard. Available from: https://www.unicode.org/versions/latest/
This situation is strictly worse than the lack of support for certain scripts or languages, which can be rectified by updating the reference to Unicode in the next revision of the C++ standard, as is regularly done with any other missing language feature deemed worth addressing.
Possible resolution [SUPERSEDED]:
Change in Clause 2 [intro.refs] paragraph 1.10 as follows:
History | |||
---|---|---|---|
Date | User | Action | Args |
2025-06-04 12:10:17 | admin | set | messages: + msg8033 |
2025-06-04 12:10:17 | admin | set | status: drafting -> review |
2024-12-18 21:53:33 | admin | set | messages: + msg7927 |
2024-12-18 21:53:33 | admin | set | status: review -> drafting |
2024-03-18 12:50:42 | admin | set | status: open -> review |
2024-01-21 13:30:12 | admin | set | messages: + msg7577 |
2024-01-06 21:29:25 | admin | set | messages: + msg7565 |
2024-01-05 00:00:00 | admin | create |