This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 119e. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2026-04-29
Consider:
# if 0
#<U+3000>else // ill-formed, diagnostic required
int x;
# endif
(where <U+3000> represents U+3000 IDEOGRAPHIC SPACE). This is ill-formed per 5.5 [lex.pptoken] paragraph 1:
... If a U+0027 apostrophe, a U+0022 quotation mark, or any character not in the basic character set matches the last category, the program is ill-formed.
This rule could benefit from an example in the standard.
Proposed resolution (approved by CWG 2026-04-28):
Change in 5.5 [lex.pptoken] paragraph 1 as follows:
... If a U+0027 apostrophe, a U+0022 quotation mark, or any character not in the basic character set matches the last category, the program is ill-formed.[ Example:
# if 0 #<U+3000>else // error: non-basic character int x; # endifThe notion <U+3000> in this example represents the character U+3000 IDEOGRAPHIC SPACE.
-- end example]