Title
Need new feature test macros for <stdckdint.h> and <stdbit.h>
Status
immediate
Section
[version.syn]
Submitter
Jonathan Wakely

Created on 2026-03-23.00:00:00 last changed 7 days ago

Messages

Date: 2026-03-23.14:20:21

Proposed resolution:

This wording is relative to N5032.

  1. Modify [version.syn] as indicated:

    #define __cpp_lib_starts_ends_with             201711L // also in <string>, <string_view>
    #define __cpp_lib_stdatomic_h                  202011L // also in <stdatomic.h>
    #define __cpp_lib_stdbit_h                     20YYMML // also in <stdbit.h>
    #define __cpp_lib_stdckdint_h                  20YYMML // also in <stdckdint.h>
    #define __cpp_lib_string_contains              202011L // also in <string>, <string_view>
    #define __cpp_lib_string_resize_and_overwrite  202110L // also in <string>
    
Date: 2026-03-23.00:00:00

[ 2026-03-23 Croydon; move to Immediate ]

Date: 2026-03-23.00:00:00

Addresses GB 07 and GB 11.

The `__STDC_VERSION_STDCKDINT_H__` macro defined by C is not sufficient to check if a C++26 implementation provides a usable <stdckdint.h> header. If a libc header of that name is found somewhere in the C++ compiler's include paths (e.g. in `/usr/include`) then it might be included and would define the macro. However, the libc version of the header might use C-specific features such as `_Bool` or `_Generic` and cause errors in a C++ program. A C++-specific macro would only be present in a C++-aware header, and so a C++ program could check if that C++-specific macro is defined in <version> to be sure that the header is usable in C++ code.

The same argument applies to <stdbit.h>.

History
Date User Action Args
2026-03-23 14:20:21adminsetmessages: + msg16043
2026-03-23 14:20:21adminsetstatus: new -> immediate
2026-03-23 12:10:33adminsetmessages: + msg16042
2026-03-23 00:00:00admincreate