This time the compilation of my dlibs (using V.1.038) has gone a little less 
smoothly.

With V.1.037 this line compiles fine, while statically asserts in V.1.038:
static assert(!is(typeof( xkeys([12:"ab", 5:"ba"]) )));

I have tried to track down the problem, but after going into a rat's nest for 
40-50+ minutes I have surrendered and just commented out the line.

That line of code is present inside the unittests of xkeys(), an iterable class 
whose opApply yields just the keys of the given associative array. Of course 
that [12:"ab", 5:"ba"] AA can't be accepted because its values aren't dynamic 
arrays, so it can't use a foreach on it yet.

-----------------------

I have seen the Bug #493 fixed, very nice. Of course the more I have the more I 
want, so I'd like to be able to do something like this:

import std.stdio: writefln;

struct Spam(T, S) {
    T a;
    S b;
    void show() {
        writefln("typeof(T), typeof(S): ", typeid(T), " ", typeid(S));
    }
}

Spam!(T, S) spam(T, S)(T a, S b) {
    return Spam!(double, int)(a, b);
}

void main() {
    Spam!(double, int)(1.0, 33).show(); // OK
    spam(1.0, 33).show(); // OK
    Spam(1.0, 33).show(); // ERROR
}

Currently I use an auxiliary function (here named spam()) to do this with 
structs (and classes).
It's just sugar, but may help me avoid about 20-30 little helper functions in 
my dlibs.

Bye,
bearophile

Reply via email to