Title
Location of specification of __STDCPP_FLOAT16_T__ macro
Status
open
Section
15.12 [cpp.predefined]
Submitter
Jay Ghiron

Created on 2026-02-15.00:00:00 last changed 2 days ago

Messages

Date: 2026-03-10.22:12:18

Possible resolution:

  1. Move the following macro definitions from 15.12 [cpp.predefined] paragraph 1 as follows:

    The following macro names shall be defined by the implementation:
    __STDCPP_FLOAT16_T__
    Defined as the integer literal 1 if and only if the implementation supports the ISO/IEC 60559 floating-point interchange format binary16 as an extended floating-point type (6.9.3 [basic.extended.fp]).
    __STDCPP_FLOAT32_T__
    Defined as the integer literal 1 if and only if the implementation supports the ISO/IEC 60559 floating-point interchange format binary32 as an extended floating-point type.
    __STDCPP_FLOAT64_T__
    Defined as the integer literal 1 if and only if the implementation supports the ISO/IEC 60559 floating-point interchange format binary64 as an extended floating-point type.
    __STDCPP_FLOAT128_T__
    Defined as the integer literal 1 if and only if the implementation supports the ISO/IEC 60559 floating-point interchange format binary128 as an extended floating-point type.
    __STDCPP_BFLOAT16_T__
    Defined as the integer literal 1 if and only if the implementation supports an extended floating-point type with the properties of the typedef-name std::bfloat16_t as described in 6.9.3 [basic.extended.fp].
  2. Add the macro definitions to 15.12 [cpp.predefined] paragraph 2 with the indicated changes as follows:

    The following macro names are conditionally defined by the implementation:
    __STDCPP_FLOAT16_T__
    Defined, and has the value integer literal 1, if and only if the implementation supports the ISO/IEC 60559 floating-point interchange format binary16 as an extended floating-point type (6.9.3 [basic.extended.fp]).
    __STDCPP_FLOAT32_T__
    Defined, and has the value integer literal 1, if and only if the implementation supports the ISO/IEC 60559 floating-point interchange format binary32 as an extended floating-point type.
    __STDCPP_FLOAT64_T__
    Defined , and has the value integer literal 1, if and only if the implementation supports the ISO/IEC 60559 floating-point interchange format binary64 as an extended floating-point type.
    __STDCPP_FLOAT128_T__
    Defined, and has the value integer literal 1, if and only if the implementation supports the ISO/IEC 60559 floating-point interchange format binary128 as an extended floating-point type.
    __STDCPP_BFLOAT16_T__
    Defined, and has the value integer literal 1, if and only if the implementation supports an extended floating-point type with the properties of the typedef-name std::bfloat16_t as described in 6.9.3 [basic.extended.fp].
Date: 2026-02-15.00:00:00

(From submission #851.)

The macros for the extended floating-point types are presented in a paragraph where unconditionally-defined macros are specified. However, those macros are conditionally defined and their presentation should be moved to the appropriate paragraph.

History
Date User Action Args
2026-03-10 22:12:18adminsetmessages: + msg8505
2026-02-15 00:00:00admincreate