Title
Undefined behavior when token pasting does not create a preprocessing token
Status
open
Section
15.6.4 [cpp.concat]
Submitter
US

Created on 2019-10-23.00:00:00 last changed 13 months ago

Messages

Date: 2023-11-15.00:00:00

Additional notes (November, 2023):

The first case of undefined behavior was addressed by paper P2621R2 (Undefined behavior in the lexer), adopted in June, 2023. The relevant part of 15.6.4 [cpp.concat] paragraph 3 now reads:

... [Note 1: Concatenation can form a universal-character-name (5.3.1 [lex.charset]). —end note] If the result is not a valid preprocessing token, the behavior is undefined. ...
Date: 2023-01-15.00:00:00

Additional notes (January, 2023):

Forwarded to SG12 with paper issue 1410, by decision of the CWG and SG12 chairs.

Date: 2019-10-23.00:00:00

(From National Body comment US 143 on the C++20 DIS.)

Subclause 15.6.4 [cpp.concat] paragraph 3 specifies:

If the result begins with a sequence matching the syntax of universal-character-name, the behavior is undefined. [Note: ... --end note] If the result is not a valid preprocessing token, the behavior is undefined.

Undefined behavior during lexing is not acceptable. The behavior ought to be well-defined, ill-formed, or conditionally-supported.

History
Date User Action Args
2023-11-03 08:05:25adminsetmessages: + msg7490
2023-01-05 08:22:04adminsetmessages: + msg7113
2019-10-23 00:00:00admincreate