This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 113d. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2024-03-20


2577. Undefined behavior for preprocessing directives in macro arguments

Section: 15.6.1  [cpp.replace.general]     Status: open     Submitter: US     Date: 2019-10-23     Liaison: SG12

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

Subclause 15.6.1 [cpp.replace.general] paragraph 13 specifies:

If there are sequences of preprocessing tokens within the list of arguments that would otherwise act as preprocessing directives, [ Footnote: ...] the behavior is undefined.

Undefined behavior during lexing is not acceptable. The behavior ought to be ill-formed or conditionally-supported. Some implementation support an #if section, others reject that.

Additional notes (January, 2023):

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