https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79226
--- Comment #2 from Marc Glisse <glisse at gcc dot gnu.org> --- Hmm, this would automatically work if we had overloads real(complex<float>) etc instead of a template, it would probably also work if the front-end provided a conversion from __complex__ float to complex<float> instead of having a constructor inside complex, but here we are in the bad situation where templates make it impossible for the compiler to guess were to look for the suitable conversion. I don't think this is worth fixing other than disabling i even with -fext-numeric-literals in 14+ mode as in PR 79228 (which sounds right, GNU extensions are nice only when they do not conflict with the standard).