I thought I needed something like staticIota in a unittest to effect static foreach over a number range and I found one in druntime's implementation:

https://github.com/dlang/druntime/blob/master/src/core/internal/traits.d#L106

(I wonder why that one is implemented in divide-and-conquer fashion. Perhaps due to faster compilation that way?)

Then I realized that this is actually pretty easy with D:

template staticIota(size_t N) {
    import std.range: iota;
    import std.meta: aliasSeqOf;
    alias staticIota = aliasSeqOf!(N.iota);
}

unittest {
    size_t count = 0;
    foreach (i; staticIota!10) {
        mixin("++count;");
    }
    assert(count == 10);
}

void main() {
}

I realized that I don't actually need it but I wanted to share. :)

Ali

P.S. Related, I've been using D for a living since I started working for Weka.IO in June. (I think the only mention of that was in this blog post: https://dlang.org/blog/2016/06/). The more I use D, the more I like it but you already know it. ;)

Reply via email to