繁体   English   中英

为什么 std::isnan 不是 constexpr?

[英]Why is std::isnan not constexpr?

从 C++20 开始,std::isnan 不是 constexpr。

这有技术原因吗?

我能想到的只是它在“C 标头”中,所以没有人费心去修复它(处理浮点数的<limits>函数是 constexpr,但不幸的是numeric_limits不包含 isnan 检查)。

答案基本上是“因为该提案尚未合并到标准中”

P0533提出你的要求,但它没有进入 C++20。

其中一个问题是,也许这个提议有点大...... <cmath><cstdlib>中的一些函数被允许设置全局错误代码,这使得整个“ constexpr all the things”提议变得复杂*

我认为这些分类功能应该没有任何问题; std::isnan及其兄弟std::fpclassify被定义为分别与 C 宏isnanfpclassify相同。 这需要稍微改变。


* (旁白: p2043 “不要constexpr所有的东西都解释”在这里是切线相关的,但它只是在谈论元编程)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM