出于某种原因,clang++(但不是 g++)提示:
constexpr double invdecayf1m(double x) {
return -log1p(-x);
}
告诉我
non-constexpr function 'log1p' cannot be used in a constant expression
return -log1p(-x);
为什么不是 common mathematical functions声明于
<cmath>
全部声明为 “ constexpr
functions” ?
最佳答案
我认为唯一的原因是没有人写过建议让它们成为 constexpr。一般来说,这是可能的,因为它们是纯函数。实现可以使用编译器内在函数来为它们的库实现它们,因此不需要“真正的”实现。但是没有建议你不能指望constexpr
这些功能的实现。
关于c++ - 为什么标准库常用数学函数不是 "constant expressions"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21303498/