自C ++ 11以来,我们拥有constexpr
个函数,并且自从每个新标准(14,11z)以来,它们受到的限制越来越少。
然而,STL中最明显的功能constexpr
,cmath
/ math.h
函数,在任何标准库实现AFAIK中仍然没有constexpr
版本
这仅仅是C ++标准的积压,还是有其他原因导致我们仍然没有这些功能的constexpr
版本?
答案 0 :(得分:5)
它还没有标准化。上周提交了一个初始proposal,但仅涵盖实用和线性操作,而不是任何超越函数。数学很难,浮点数学很复杂。例如,实现不允许在constexpr
中溢出到无穷大,但这还没有明确标准化。
编译器的constexpr
解释器必须特殊于数学库接口,因为与标准库的其他部分不同,它无法看到它的实现。
GCC确实将数学函数的持续评估作为不一致的扩展。