9 Declarations [dcl.dcl]

9.8 Namespaces [basic.namespace]

9.8.1 General [basic.namespace.general]

A namespace is an optionally-named declarative region.
The name of a namespace can be used to access entities declared in that namespace; that is, the members of the namespace.
Unlike other declarative regions, the definition of a namespace can be split over several parts of one or more translation units.
[Note 1:
A namespace name with external linkage is exported if any of its namespace-definitions is exported, or if it contains any export-declarations ([module.interface]).
A namespace is never attached to a module, and never has module linkage even if it is not exported.
— end note]
[Example 1: export module M; namespace N1 {} // N1 is not exported export namespace N2 {} // N2 is exported namespace N3 { export int n; } // N3 is exported — end example]
The outermost declarative region of a translation unit is a namespace; see [basic.scope.namespace].