Andrei Alexandrescu wrote:
Lars T. Kyllingstad wrote:
The decision to dump the built-in complex and imaginary types in favour of std.complex.Complex was made a long time ago, but nothing has happened yet. So I have a few questions:

1. Is this still planned for D2?

Far as I know, yes.

2. In that case, when will it happen?

I don't know.

3. Are there any reasons why I shouldn't replace cxxx with Complex!xxx in my code right away?

I think we'll have to provide aliases for the existing complex types, so your code should continue functioning after the change.

The big difference is in assignments:

  real a, b;
  creal x = a + b*1.0i;
  auto y = Complex!real(a, b);

  // Also, this doesn't work with current complex types, because
  // creal.re and creal.im aren't lvalues:
  Complex!real z;
  z.re = a;
  z.im = b;

But it's not a problem, really. Since Complex!T is binary compatible with the current complex types I can just insert a few casts here and there. I just wanted to make sure I wouldn't have to go back to creal & co later.

-Lars

Reply via email to