Why does sum not work in static arrays?
Tim K. via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Dec 6 04:23:05 PST 2015
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
More information about the Digitalmars-d-learn
mailing list