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

4473. <cfloat> should be specified not to contain all macros in <float.h>

Section: 17.3.7 [cfloat.syn] Status: New Submitter: Jan Schultke Opened: 2025-11-13 Last modified: 2026-01-16

Priority: 3

View all issues with New status.

Discussion:

Consider 17.3.6 [climits.syn] paragraph 1:

The header <climits> defines all macros the same as the C standard library header <limits.h>, except that it does not define the macro BITINT_MAXWIDTH.

Similarly, <cfloat> is missing various macros from C's <float.h>, but this is not stated.

[2026-01-16; Reflector poll.]

Set priority to 3 after reflector poll.

"Could be just 'The header <cfloat> defines all macros shown above the same as the C standard library header <float.h>."

"That would resolve my concern to require C++ implementations to actively #undef things from <float.h>. It should be up to the implementation."

Previous resolution [SUPERSEDED]:

This wording is relative to N5014.

  1. Modify 17.3.7 [cfloat.syn] as indicated:

    -1- The header <cfloat> defines all macros the same as the C standard library header <float.h>, except that it does not define any macros specifying characteristics of C decimal floating types or C interchange floating types.

[2026-01-16; Jonathan provides improved wording]

Proposed resolution:

This wording is relative to N5032.

  1. Modify 17.3.7 [cfloat.syn] as indicated:

    -1- The header <cfloat> defines all macros shown above the same as the C standard library header <float.h>.