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


3178. Add example for ill-formed non-preprocessing tokens

Section: 5.5  [lex.pptoken]     Status: tentatively ready     Submitter: CA     Date: 2025-10-02

N5028 comment CA 022

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;
  # endif

The notion <U+3000> in this example represents the character U+3000 IDEOGRAPHIC SPACE.

-- end example]