【发布时间】:2020-10-30 04:37:54
【问题描述】:
从 C++20 开始,std::isnan 不是 constexpr。
这有技术原因吗?
我能想到的只是它在“C 标头”中,所以没有人费心去修复它(<limits> 处理浮点数的函数是 constexpr,但不幸的是 numeric_limits 不包含 isnan 检查)。
【问题讨论】:
-
也许它最初不是 constexpr 因为检查 NaN 通常需要在常量表达式中不允许的那种双关语和位旋转。但是话又说回来,编译器可以在需要时“神奇地”制作 constexpr 的东西。所以,我只能猜测。
-
open-std.org/JTC1/SC22/WG21/docs/papers/2019/p0533r5.pdf 也许我们会在 C++23 中得到它
-
会不会是
std::fpclassify中的某些东西现在禁止它? -
x!=x是你的朋友。 -
NoSesseEtAll:你得到的答案没有回答你的问题吗?