[Bug libstdc++/107649] New std::complex specializations are never used

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Nov 11 20:52:03 GMT 2022


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107649

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Although if the _GLIBCXX_FLOAT_IS_IEEE_BINARY32 macro is not defined, it will
still be ambiguous, because we won't define these overloads:

#if _GLIBCXX_USE_C99_COMPLEX
#if defined(__STDCPP_FLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
  inline _Float16
  __complex_abs(__complex__ _Float16 __z)
  { return _Float16(__builtin_cabsf(__z)); }

So should the __complex_type specializations that cause us to use __complex__
_Tp depend on those same macros? So we don't use the efficient representation
unless we can also define these overloads?


More information about the Gcc-bugs mailing list