std.compat
should not provide ::byte
and its friendsSection: 16.4.2.4 [std.modules] Status: C++23 Submitter: Jiang An Opened: 2022-09-19 Last modified: 2023-11-22
Priority: Not Prioritized
View all issues with C++23 status.
Discussion:
Currently 16.4.2.4 [std.modules]/3 seemly requires that the std.compat
module
has to provide byte
(via <cstddef>
), beta
(via <cmath>
)
etc. in the global namespace, which is defective to me as these components are C++-only,
and doing so would increase the risk of conflict.
std.compat
provide the same set of global declarations as
<xxx.h>
headers.
[2022-10-12; Reflector poll]
Set status to Tentatively Ready after nine votes in favour during reflector poll.
[2022-11-12 Approved at November 2022 meeting in Kona. Status changed: Voting → WP.]
Proposed resolution:
This wording is relative to N4917.
Modify 16.4.2.4 [std.modules] as indicated:
-3- The named module
std.compat
exports the same declarations as the named modulestd
, and additionally exports declarations in the global namespace corresponding to the declarations in namespacestd
that are provided by the C++ headers for C library facilities (Table 26), except the explicitly excluded declarations described in 17.14.7 [support.c.headers.other].