3784. std.compat should not provide ::byte and its friends

Section: 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.

I think we should only let 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.

  1. Modify 16.4.2.4 [std.modules] as indicated:

    -3- 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 std 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].