diff options
author | Jakub Jelinek <jakub@redhat.com> | 2022-11-16 14:45:40 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2022-11-16 14:45:40 +0100 |
commit | 0e2c5510e001e5ccbde9e4b7df757e2bba2fdb00 (patch) | |
tree | cc6cea808742a4f3edcf3a4df1de2cf61ca211be /gcc/fortran/interface.cc | |
parent | cf958f8f168f695d49e29297ef9fb37f6efa5d0f (diff) | |
download | gcc-0e2c5510e001e5ccbde9e4b7df757e2bba2fdb00.zip gcc-0e2c5510e001e5ccbde9e4b7df757e2bba2fdb00.tar.gz gcc-0e2c5510e001e5ccbde9e4b7df757e2bba2fdb00.tar.bz2 |
libstdc++: Fix up <complex> for extended floating point types [PR107649]
As filed by Jonathan in the PR, I've screwed up the requires syntax
in the extended floating point specialization:
- requires(__complex_type<_Tp>::type)
+ requires requires { typename __complex_type<_Tp>::type; }
and doing this change resulted in lots of errors because __complex_whatever
overfloads from extended floating point types were declared after the
templates which used them.
The following patch fixes that.
Bootstrapped/regtested on x86_64-linux and i686-linux, additionally
I've tested that with _GLIBCXX_HAVE_FLOAT128_MATH not being defined
while __STDCPP_FLOAT128_T__ defined one can still use
std::complex<std::float128_t> for basic arithmetic etc., just one can't
expect std::sin etc. to work in that case (because we don't have any
implementation).
2022-11-16 Jakub Jelinek <jakub@redhat.com>
Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/107649
* include/std/complex (__complex_abs, __complex_arg, __complex_cos,
__complex_cosh, __complex_exp, __complex_log, __complex_sin,
__complex_sinh, __complex_sqrt, __complex_tan, __complex_tanh,
__complex_pow): Move __complex__ _Float{16,32,64,128} and
__complex__ decltype(0.0bf16) overloads earlier in the file.
(complex): Fix up requires on the partial specialization for extended
float types.
(__complex_acos, __complex_asin, __complex_atan, __complex_acosh,
__complex_asinh, __complex_atanh): Move
__complex__ _Float{16,32,64,128} and __complex__ decltype(0.0bf16)
overloads earlier in the file.
Diffstat (limited to 'gcc/fortran/interface.cc')
0 files changed, 0 insertions, 0 deletions