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

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

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

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

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

尚未标准化。上周刚刚提交了初始 proposal,但仅涵盖效用和线性运算,不包括任何超越函数。数学很难,floating-point 数学很复杂。例如,实现不允许在 constexpr 中溢出到无穷大,但这尚未明确标准化。

编译器的 constexpr 解释器必须 special-case 数学库接口,因为与标准库的其余部分不同,它看不到它的实现。

GCC 确实提供了对数学函数的持续评估,作为一种不合格的扩展。