llvm-capstone/libcxx/modules
Hristo Hristov 03c19e91e8
[libc++][numeric] P0543R3: Saturation arithmetic (#77967)
Implements: https://wg21.link/P0543R3
- https://eel.is/c++draft/numeric.sat

Additional references:
- Division: https://eel.is/c++draft/expr.mul#4
- Arithmetic conversions: https://eel.is/c++draft/expr.arith.conv#1
- Clang builtins:
https://clang.llvm.org/docs/LanguageExtensions.html#builtin-functions

Depends on: https://github.com/llvm/llvm-project/pull/78086

---------

Co-authored-by: Zingam <zingam@outlook.com>
Co-authored-by: Mark de Wever <zar-rpg@xs4all.nl>
2024-01-22 06:57:45 +02:00
..
std [libc++][numeric] P0543R3: Saturation arithmetic (#77967) 2024-01-22 06:57:45 +02:00
std.compat [libc++][modules] Adds std.compat module. (#71438) 2023-12-09 13:51:50 +01:00
.clang-format [libc++][modules] Adds the C++23 std module. 2023-06-15 18:14:15 +02:00
CMakeLists.txt [libc++] Install modules. (#75741) 2024-01-21 12:16:22 +01:00
modules.json.in [libc++] Install modules. (#75741) 2024-01-21 12:16:22 +01:00
README.md [libc++][modules] Removes the module partitions. 2023-08-09 19:39:08 +02:00
std.compat.cppm.in [libc++][modules] Improves std.compat module. (#76330) 2024-01-21 12:15:15 +01:00
std.cppm.in [libc++][modules] Improves std.compat module. (#76330) 2024-01-21 12:15:15 +01:00

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 " 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 for details.