This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 115f. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2024-12-06
[Accepted as a DR at the November, 2023 meeting.]
(From editorial issue 4903.)
Subclause 5.2 [lex.phases] paragraph 2 specifies:
... Each sequence of a backslash character (\) immediately followed by zero or more whitespace characters other than new-line followed by a new-line character is deleted, splicing physical source lines to form logical source lines. ... A source file that is not empty and that does not end in a new-line character, or that ends in a splice, shall be processed as if an additional new-line character were appended to the file.
This is confusing, because the first sentence deletes all splices, and then the last sentence checks for a splice that has already been deleted.
Proposed resolution (approved by CWG 2023-07-14):
Change in 5.2 [lex.phases] paragraph 2 as follows:
... Each sequence of a backslash character (\) immediately followed by zero or more whitespace characters other than new-line followed by a new-line character is deleted, splicing physical source lines to form logical source lines. ... A source file that is not empty and that (after splicing) does not end in a new-line character, or that ends in a splice,shall be processed as if an additional new-line character were appended to the file.
CWG 2023-07-14
CWG noted that a lone backslash at the end of a file remains (in the status quo and with the proposed change) and turns into an ill-formed preprocessing-token. The wording as amended seems sufficiently clear to consider issue 1698 resolved.