作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据 cppreference,函数 acosl
应该在 std 命名空间中:https://en.cppreference.com/w/cpp/numeric/math/acos
但是,使用 gcc(或 clang),下面的代码无法编译:
#include <cmath>
int main()
{
long double var = std::acosl(4.0);
return 0;
}
gay@latitude-7490:~$ g++ -std=c++11 test.cpp
test.cpp: In function 'int main()':
test.cpp:5:26: error: 'acosl' is not a member of 'std'; did you mean 'acosh'?
5 | long double truc = std::acosl( (long double)4.0);
| ^~~~~
| acosh
最佳答案
这似乎是一个 libstdc++ 错误。cmath
在 libstdc++ 中不只是包装 #include <math.h>
在 namespace std
:它定义了委托(delegate)给内置函数的新函数。我猜想添加到 this source code 的定义.当 C++11(通过 C99)引入该函数时,这可能只是一个疏忽。 (尽管注意到 acos(long double __x)
重载委托(delegate)给 __builtin_acosl
!)
在 Clang 中,切换到 libc++ 可以解决问题。使用 libstdc++,使用 acosl
的全局命名空间版本也应该工作。
你应该 raise a bug .我认为它被 bug #79700 所覆盖.
关于c++ - acosl 不在 std 命名空间中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60604317/
根据 cppreference,函数 acosl应该在 std 命名空间中:https://en.cppreference.com/w/cpp/numeric/math/acos 但是,使用 gcc(
我是一名优秀的程序员,十分优秀!