Issue 465: Contents of (original) (raw)


This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of CD1 status.

465. Contents of

Section: 16.4.2.3 [headers] Status: CD1 Submitter: Steve Clamage Opened: 2004-06-03 Last modified: 2016-01-28

Priority: Not Prioritized

View all other issues in [headers].

View all issues with CD1 status.

Discussion:

C header <iso646.h> defines macros for some operators, such as not_eq for !=.

Section 16.4.2.3 [headers] "Headers" says that except as noted in clauses 18 through 27, the C++ header contents are the same as the C header <name.h>. In particular, table 12 lists as a C++ header.

I don't find any other mention of , or any mention of <iso646.h>, in clauses 17 thorough 27. That implies that the contents of are the same as C header <iso646.h>.

Annex C (informative, not normative) in [diff.header.iso646.h] C.2.2.2 "Header <iso646.h>" says that the alternative tokens are not defined as macros in , but does not mention the contents of <iso646.h>.

I don't find any normative text to support C.2.2.2.

Proposed resolution:

Add to section 17.4.1.2 Headers [lib.headers] a new paragraph after paragraph 6 (the one about functions must be functions):

Identifiers that are keywords or operators in C++ shall not be defined as macros in C++ standard library headers. [Footnote:In particular, including the standard header <iso646.h> or has no effect.

[post-Redmond: Steve provided wording.]