[Bug c++/49813] [C++0x] sinh vs asinh vs constexpr
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Fri Jul 22 11:30:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49813
--- Comment #14 from rguenther at suse dot de <rguenther at suse dot de> 2011-07-22 11:29:04 UTC ---
On Fri, 22 Jul 2011, paolo.carlini at oracle dot com wrote:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49813
>
> --- Comment #11 from Paolo Carlini <paolo.carlini at oracle dot com> 2011-07-22 11:20:36 UTC ---
> It does *not* Richi, there is an using ::asinh above. Exactly the same for
> sinh.
There is also a using ::asinhf but still std:: provides an
overload.
Please provide a _complete_ standalone testcase that you think should
work and does not (w/o any includes).
I suspect it's because of
DEF_C99_BUILTIN (BUILT_IN_CASINH, "casinh",
BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
so if -std=c++0x does not include C99 functions then we have no
implicit builtin support and the following does not work:
extern "C" double asinh(double x);
namespace std {
using ::asinh;
}
int main()
{
constexpr double das = std::asinh(1.0);
}
it also does not work with
namespace std {
double asinh (double x) { return __builtin_asinh (x); }
}
int main()
{
constexpr double das = std::asinh(1.0); // Doesn't compile.
}
but it works with
int main()
{
constexpr double das = __builtin_asinh(1.0); // Doesn't compile.
}
which means this is still a C++ frontend / library issue.
More information about the Gcc-bugs
mailing list