Title
Some feature-test macros for fully freestanding features are not yet marked freestanding
Status
voting
Section
[version.syn]
Submitter
Jiang An

Created on 2024-07-24.00:00:00 last changed yesterday

Messages

Date: 2024-08-02.21:14:44

Proposed resolution:

This wording is relative to N4986.

  1. Modify [version.syn] as indicated:

    [Drafting note: <charconv> is not fully freestanding, but all functions made constexpr by P2291R3 are furtherly made freestanding by P2338R4. ]

    […]
    #define __cpp_lib_common_reference                  202302L // freestanding, also in <type_traits>
    #define __cpp_lib_common_reference_wrapper          202302L // freestanding, also in <functional>
    […]                                                                              
    #define __cpp_lib_constexpr_charconv                202207L // freestanding, also in <charconv>
    […]                                                                              
    #define __cpp_lib_coroutine                         201902L // freestanding, also in <coroutine>
    […]                                                                              
    #define __cpp_lib_is_implicit_lifetime              202302L // freestanding, also in <type_traits>
    […]                                                                              
    #define __cpp_lib_is_virtual_base_of                202406L // freestanding, also in <type_traits>
    […]                                                                              
    #define __cpp_lib_is_within_lifetime                202306L // freestanding, also in <type_traits>
    […]                                                                              
    #define __cpp_lib_mdspan                            202406L // freestanding, also in <mdspan>
    […]                                                                              
    #define __cpp_lib_ratio                             202306L // freestanding, also in <ratio>
    […]                                                                              
    #define __cpp_lib_span_initializer_list             202311L // freestanding, also in <span>
    […]                                                                              
    #define __cpp_lib_submdspan                         202403L // freestanding, also in <mdspan>
    […]                                                                              
    #define __cpp_lib_to_array                          201907L // freestanding, also in <array>
    […]
    
Date: 2024-08-15.00:00:00

[ 2024-08-02; Reflector poll ]

Set priority to 2 and set status to Tentatively Ready after seven votes in favour during reflector poll.

Date: 2024-07-24.00:00:00

Currently (N4986), it's a bit weird in [version.syn] that some feature-test macros are not marked freestanding, despite the indicated features being fully freestanding. The freestanding status seems sometimes implicitly covered by "also in" headers that are mostly or all freestanding, but sometimes not.

I think it's more consistent to ensure feature-test macros for fully freestanding features are also freestanding.

History
Date User Action Args
2024-11-19 16:09:07adminsetstatus: ready -> voting
2024-08-02 23:16:03adminsetstatus: new -> ready
2024-08-02 21:14:44adminsetmessages: + msg14285
2024-07-27 11:07:04adminsetmessages: + msg14273
2024-07-24 00:00:00admincreate