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

Elias Pipping <pipping at exherbo dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pipping at exherbo dot org

--- Comment #4 from Elias Pipping <pipping at exherbo dot org> ---
For future reference and anyone else trying to understand this bug, a bit more
info:

The fix in r216258 makes something like the following compile in C++14 mode
again:

#include <complex>

int
main()
{
  std::complex<int> const x(1,2);
  int r = x.real();
}

The fact that int is used as the template parameter of std::complex is
important here: float, double, and long double are handled through a
specialisation that had already been adjusted in r198141.

Since the effect of instantiating std::complex<T> where T is anything other
than one of those three floating point types is unspecified, types like
std::complex<int> are probably hardly ever used except by accident; it thus
makes sense that it took two years for someone to come across this (although I
guess instead of int, users will probably typically plug in custom floating
point types).

Reply via email to