https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61761
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jan van Dijk from comment #2) > Is it not perfectly fine that your patch works only for _Tp equal to float, > double or long double? Anything else is unspecified per 24.5(2). Does > libstdc++ advertise to go beyond the standard and support other scalar types > as well? (And if so: is that policy documented anywhere?) Look at the source. <complex> defines the full std::complex<T> primary template as well as explicit specializations for std::complex<float>, std::complex<double> and std::complex<long double>.