Created on 2013-01-29.00:00:00 last changed yesterday
[ 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.
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:17 | admin | set | messages: + msg16395 |
| 2026-06-09 16:49:17 | admin | set | status: new -> core |
| 2013-01-29 00:00:00 | admin | create | |