Yes. The relevant section from the latest Draft for the C++23 Standard (cited below) makes explicit mention of the ISO/IEC/IEEE 60559 floating-point standard for the float*_t
types. That is identical to the IEEE-754 standard according to Wikipedia:
The international standard ISO/IEC/IEEE 60559:2011 (with content
identical to IEEE 754-2008) has been approved for adoption through
ISO/IEC JTC 1/SC 25 under the ISO/IEEE PSDO Agreement and published.
Here is the first part of the relevant section from the Draft C++23 Standard (the definitions for other 'precision' types are similar):
6.8.3 Optional extended floating-point types [basic.extended.fp]
1 If the implementation supports an
extended floating-point type ([basic.fundamental]) whose properties
are specified by the ISO/IEC/IEEE 60559 floating-point interchange
format binary16, then the typedef-name std::float16_
t is
defined in the header <stdfloat>
and names such a type, the macro
__STDCPP_FLOAT16_T__
is defined ([cpp.predefined]), and the
floating-point literal suffixes f16
and F16
are supported
([lex.fcon]).
…
(… And similarly for float32_t
, float64_t
, etc.)
Note: In terms of whether the cited paragraph demands that operations on such a type conform to the IEEE/ISO Standard, I would argue that it does. The "properties" of such variables includes their behaviour, and not just their representation format.
float
/double
/long double
)" – HeftfloatN_t
were aliases tofloat
/double
/long double
, then you can say thatfloatN_t
are not IEEE because these fundamental types are not guarenteed to be IEEE (although in practice most are). – Reclinatestdfloat
now. But just wanted to know to what extent it was compliant. Similar bit-count was just a coincidence or not? – Reclinate