22 lines
1.1 KiB
Markdown
22 lines
1.1 KiB
Markdown
|
# The "module partitions" for the std module
|
||
|
|
||
|
The files in this directory contain the exported named declarations per header.
|
||
|
These files are used for the following purposes:
|
||
|
|
||
|
- During testing exported named declarations are tested against the named
|
||
|
declarations in the associated header. This excludes reserved names; they
|
||
|
are not exported.
|
||
|
- Generate the module std.
|
||
|
|
||
|
These use cases require including the required headers for these "partitions"
|
||
|
at different locations. This means the user of these "partitions" are
|
||
|
responsible for including the proper header and validating whether the header can
|
||
|
be loaded in the current libc++ configuration. For example "include <locale>"
|
||
|
fails when locales are not available. The "partitions" use the libc++ feature
|
||
|
macros to export the declarations available in the current configuration. This
|
||
|
configuration is available if the user includes the `__config' header.
|
||
|
|
||
|
We use `.inc` files that we include from the top-level module instead of
|
||
|
using real C++ module partitions. This is a lot faster than module partitions,
|
||
|
see [this](https://discourse.llvm.org/t/alternatives-to-the-implementation-of-std-modules/71958) for details.
|