Title
<cuchar> macros
Status
core
Section
[c.strings]
Submitter
Jason Merrill

Created on 2013-01-29.00:00:00 last changed yesterday

Messages

Date: 2026-06-09.16:50:25

[ Brno 2026-06-09; Change status New → Core ]

In C++14 these macros were defined in a table showing them as macros in <cuchar>, but claiming that the meaning was the same as in the C header. But those macros were never in the C header. That header came from ISO/IEC TR 19769:2004, where the macros were defined in the header. But in the final C11 standard, the macros were predefined by the compiler not in the header. So C++14 was never correct to say they had the same meaning as in C, and their meaning was never defined in C++.

An editorial change for C++17 removed the table mentioning those macros, so they now have no existence at all in C++. They're not inherited from the C version of `uchar.h` and they're not predefined by a C++ compiler.

If we want to copy those macros from C, they should be in [cpp.predefined], so Core should decide on that.

Date: 2013-01-29.00:00:00

Apparently C1X changes __STDC_UTF_16__ and __STDC_UTF_32__ from macros defined in uchar.h (and reflected in C++ by Table 79) to be predefined by the compiler. Do we want to do the same?

History
Date User Action Args
2026-06-09 16:49:17adminsetmessages: + msg16395
2026-06-09 16:49:17adminsetstatus: new -> core
2013-01-29 00:00:00admincreate