On Friday, 11 September 2015 at 04:02:17 UTC, rcorre wrote:
On Friday, 11 September 2015 at 03:25:58 UTC, SimonN wrote:
Hi,
I've ran into a compilation error when iterating over a const Enumap. In the following code:

Interesting, thanks for pointing that out.
I don't think I did a great job with const-correctness here, I'll take a look tomorrow. It should definitely be possible to iterate over (and index, etc...) a const/immutable Enumset, though you're right that it doesn't work right now.

No worries, take your time! Thanks for the quick clarification.

I've also tested a couple ways of assigning in a foreach. Continuing from my code above (struct A { Enumap!(MyEnum, int) map; /* ... */ }), I've tried this in the main function:

    int some_value = 100;
    A a;

    foreach (MyEnum e, ref val; a.map)
        val = ++some_value;
    a.mutable_output();

    foreach (MyEnum e, ref val; a.map)
        a.map[e] = ++some_value;
    a.mutable_output();

Output:

    e1: 0
    e2: 0
    e3: 0
    e1: 104
    e2: 105
    e3: 106

Since I have been using "ref val" in the first loop, I expected the output to be instead:

    e1: 101
    e2: 102
    e3: 103
    e1: 104
    e2: 105
    e3: 106

-- Simon

Reply via email to