https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89991
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> --- I think it's allowed. The standards have very little to say about accuracy of any mathematical functions, and complex<double>(0, 0.0) == complex<double>(0, -0.0) is true according to the standard, because +0.0 == -0.0 is true.