This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Immediate status.

4550. Need new feature test macros for <stdckdint.h> and <stdbit.h>

Section: 17.3.2 [version.syn] Status: Immediate Submitter: Jonathan Wakely Opened: 2026-03-23 Last modified: 2026-03-24

Priority: Not Prioritized

View other active issues in [version.syn].

View all other issues in [version.syn].

View all issues with Immediate status.

Discussion:

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

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

Proposed resolution:

This wording is relative to N5032.

  1. Modify 17.3.2 [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>