H. S. Teoh:

> But why can't 'this' be const? For example, why does the compiler reject
> this:
> 
>       class A {
>               int[] data;
>               pure const int sum() {
>                       return reduce!"a*b"(data);
>               }
>       }
> 
> I'm not modifying data at at all, so why should it be an error?

I think it's a small bug in std.algorithm.reduce, is this in Bugzilla already?


import std.algorithm: reduce;
void main() {
    const data = [2, 3, 4];
    int r1 = reduce!q{a * b}(0, data); // OK
    int r2 = reduce!q{a * b}(data);
}



In std.algorithm.reduce there is also this (now bug 2443 is fixed) at about 
line 723:

            // For now, just iterate using ref to avoid unnecessary copying.
            // When Bug 2443 is fixed, this may need to change.
            foreach(ref elem; r)
            {
                if(initialized)

Bye,
bearophile

Reply via email to