Hi! I have the following code:

    int main(string[] argv)
    {
        import std.algorithm: sum;
        import std.stdio: writeln;

        uint[3] a1 = [1, 2, 3];
        uint[] a2;
        for (int i = 1; i <= 3; ++i)
            a2 ~= i;

        writeln("a1: ", sum(a1));
        writeln("a2: ", sum(a2));
        return 0;
    }

This throws the error:
dummy.d(11): Error: template std.algorithm.iteration.sum cannot deduce function from argument types !()(uint[3]), candidates are: /usr/include/dmd/phobos/std/algorithm/iteration.d(3916): std.algorithm.iteration.sum(R)(R r) if (isInputRange!R && !isInfinite!R && is(typeof(r.front + r.front))) /usr/include/dmd/phobos/std/algorithm/iteration.d(3927): std.algorithm.iteration.sum(R, E)(R r, E seed) if (isInputRange!R && !isInfinite!R && is(typeof(seed = seed + r.front)))


So a dynamic array works just fine. In fact, if I uncomment the line in question the program compiles and outputs the correct value (for a2). Why does "sum" not work on static arrays?


Regards

Reply via email to