Namespace:

Why don't you discuss on github?

I sometimes discuss on GitHub, but when the amount of things I have to say are large enough I think a forum like this is better. Also I don't like the lack of threading in GitHub comments.


And finally I did it:

----
auto[$] a_arr2 = dyn_arr[4 .. 8];
assert(is(typeof(a_arr2) == int[4]));
----

I will make a Pull Request tomorrow.

Good :-)

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

Regarding fixed sized arrays there's another point, visible here:

void main() {
    int[3] a, b, c;
    pragma(msg, typeof(a[] + b[]));
}

It prints:
int[]

So it seems the compiler loses track of the compile-time knowledge of the length of those arrays (it's probably caused by the slicing). In my opinion this is quite important because such loss of information makes it harder for the compiler to rewrite code as "c[] = a[] + b[]" as:

foreach (immutable i; 0 .. 3)
    c[i] = a[i] + b[i];

That later the back-end should unroll in just three sums (this is routinely done by the Fortran array ops); and a smart back-end can even rewrite with a single SIMD instruction (adding padding to the a, b, and c arrays making them 4 integers long).

Bye,
bearophile

Reply via email to