1065. Allow inline namespaces within namespace std for implementations

Section: 20.5.1.1 [contents] Status: C++11 Submitter: Howard Hinnant Opened: 2009-03-15 Last modified: 2016-02-10

Priority: Not Prioritized

View all other issues in [contents].

View all issues with C++11 status.

Discussion:

Addresses UK 168 [CD1]

We should make it clear (either by note or normatively) that namespace std may contain inline namespaces, and that entities specified to be defined in std may in fact be defined in one of these inline namespaces. (If we're going to use them for versioning, eg when TR2 comes along, we're going to need that.)

Replace "namespace std or namespaces nested within namespace std" with "namespace std or namespaces nested within namespace std or inline namespaces nested directly or indirectly within namespace std"

[ Summit: ]

adopt UK words (some have reservations whether it is correct)

[ 2009-05-09 Alisdair improves the wording. ]

[ Batavia (2009-05): ]

Bill believes there is strictly speaking no need to say that because no portable test can detect the difference. However he agrees that it doesn't hurt to say this.

Move to Tentatively Ready.

Proposed resolution:

Change 20.5.1.1 [contents] p2:

All library entities except macros, operator new and operator delete are defined within the namespace std or namespaces nested within namespace std. It is unspecified whether names declared in a specific namespace are declared directly in that namespace, or in an inline namespace inside that namespace. [Footnote: This gives implementers freedom to support multiple configurations of the library.]