gpt4 book ai didi

c++ - acosl 不在 std 命名空间中?

转载 作者:行者123 更新时间:2023-12-01 12:32:17 25 4
gpt4 key购买 nike

根据 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

我错过了什么?我误读了 cppreference 吗?

最佳答案

这似乎是一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com