a is of type double, b is of type idouble. When you consume the next element, the result would be double again, and it oscillates like that.

I guess the return is CommonType!(double,idouble) in that case, right?

Is that so hard to figure out...Hmm, there seems to be a limitation in D's builtin handling of complex numbers.

import std.stdio, std.algorithm, std.traits;
void main(string args[])
{
    double re;
    idouble im;
    alias C = CommonType!(double, idouble);
    C c;
writeln(typeof(re).stringof, ",", typeof(im).stringof, ",", C.stringof);
}

prints

double,idouble,double

This is *not* what we want.

We want to print something like

double,idouble,cdouble (or Complex!double!)

I guess that's why it's deprecated in favour of std.complex...

Reply via email to