为什么C++标准没有提到__STDC_IEC_559__?

Mit*_*iya 10 c++ c++11

根据C++ 11标准[c.math],<cmath>标题与标准C库标题相同<math.h>.
(当然,有几个区别,---命名空间,重载等---但这些可以在这里忽略.)
并且根据C99标准附录F,"定义的实现__STDC_IEC_559__应符合"附件中的规范F.

防爆.在atan2可能引起域错误,如果两个参数都是零,但它不能如__STDC_IEC_559__定义.

在C99中,许多行为还取决于是否__STDC_IEC_559__定义.

但是,似乎__STDC_IEC_559__在C++ 11标准中没有提到任何地方.
如果是这样,C++实现是否符合附件F中的规范?

我认为这std::numeric_limits<T>::is_iec559()是一种替代品,但似乎只提到了类型.

dav*_*pfx 4

C++ 标准 (n3797) 通过引用包含 C 标准库,请参阅 s1.2/2。

ISO/IEC 9899:1999 第 7 条、ISO/IEC 9899:1999/Cor.1:2001 第 7 条和 ISO/IEC 9899:1999/Cor.2:2003 第 7 条中描述的库以下称为 C标准库。

根据第 18 条至第 30 条以及 C.4 中所述的限定,C 标准库是 C++ 标准库的子集。

该标准没有提及该符号,并且我不希望对其进行定义,因为它似乎特定于标准 C。通过不定义该符号,C++ 不受附录 F 内容的约束。

相反,C++ 标准以更像 C++ 的形式多次提及 IEC 559。例如,

对于所有专业领域均应如此is_iec559 != false

18.3.2.4/56中有具体提及。

静态 constexpr bool is_iec559;

当且仅当类型符合 IEC 559 标准时为真。218

对于所有浮点类型都有意义。

我认为可以公平地说,C++ 包含所有相同的功能(或缺乏这些功能),但适应了 C++ 世界。