为什么C++标准库不提供 cmath 函数的 constexpr 版本?

Why doesn't the C++ standard library provide constexpr versions of the cmath functions?

本文关键字:函数 constexpr 版本 cmath 标准 C++ 为什么      更新时间:2023-10-16

自 C++11 以来,我们constexpr函数,并且自从每个新标准(14, 1z(以来,它们的限制越来越少。

然而,STL中最明显的函数可以constexprcmath/math.h函数,在任何标准库实现AFAIK中仍然没有constexpr版本。

这仅仅是在C++标准的积压工作中,还是有任何其他原因导致我们仍然没有这些函数的constexpr版本?

它还没有标准化。上周刚刚提交了一份初步提案,但只涵盖了效用和线性运算,而不是任何超越函数。数学很难,浮点数学很复杂。例如,实现不允许在constexpr中溢出到无穷大,但这还没有明确的标准化。

编译器的constexpr解释器必须对数学库接口进行特殊处理,因为与标准库的其余部分不同,它看不到它的实现。

GCC 确实提供数学函数的持续评估作为不符合的扩展。