从C++20开始,std::isnan不再是constexpr。
这是否有技术上的原因?
我所能想到的是它在“C头文件”中,因此没有人费心去修复它(<limits>
处理浮点数的函数是constexpr的,但不幸的是numeric_limits
不包含isnan检查)。
<cmath>
或 <cstdlib>
中的一些函数被允许设置全局错误代码,这使得整个“constexpr
所有东西”的提议变得复杂起来。*
我认为这些分类函数不应该有任何问题; std::isnan
和其姊妹函数 std::fpclassify
都定义为与 C 宏 isnan
和 fpclassify
表现相同。这将需要稍作更改。
constexpr
修饰”在这里有些相关,但它只是在谈论元编程。)
std::fpclassify
中的某些东西禁止它吗? - Ted Lyngmox!=x
是你的好朋友。 - Davis Herring