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

时间:2017-02-12 15:07:00

标签: c++ c++11 constexpr c++-standard-library

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

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

这仅仅是C ++标准的积压,还是有其他原因导致我们仍然没有这些功能的constexpr版本?

1 个答案:

答案 0 :(得分:5)

它还没有标准化。上周提交了一个初始proposal,但仅涵盖实用和线性操作,而不是任何超越函数。数学很难,浮点数学很复杂。例如,实现不允许在constexpr中溢出到无穷大,但这还没有明确标准化。

编译器的constexpr解释器必须特殊于数学库接口,因为与标准库的其他部分不同,它无法看到它的实现。

GCC确实将数学函数的持续评估作为不一致的扩展。