[std.modules] (original) (raw)
16 Library introduction [library]
16.4 Library-wide requirements [requirements]
16.4.2 Library contents and organization [organization]
16.4.2.4 Modules [std.modules]
The C++ standard library provides the following C++ library modules.
The named module std exports declarations in namespace stdthat are provided by the importable C++ library headers (Table 24 or the subset provided by a freestanding implementation) and the C++ headers for C library facilities (Table 25).
It additionally exports declarations in the global namespace for the storage allocation and deallocation functions that are provided by .
The named module std.compat exports the same declarations as the named module std, and additionally exports
- declarations in the global namespace corresponding to the declarations in namespace stdthat are provided by the C++ headers for C library facilities (Table 25), except the explicitly excluded declarations described in [support.c.headers.other] and
- declarations provided by the headers and .
It is unspecified to which module a declaration in the standard library is attached.
[Note 1:
Conforming implementations ensure that mixing#include and import does not result in conflicting attachments ([basic.link]).
— _end note_]
Recommended practice: Implementations should ensure such attachments do not preclude further evolution or decomposition of the standard library modules.
A declaration in the standard library denotes the same entity regardless of whether it was made reachable through including a header, importing a header unit, or importing a C++ library module.
Recommended practice: Implementations should avoid exporting any other declarations from the C++ library modules.