DMD Bug or not? foreach over struct range

Nick Sabalausky SeeWebsiteToContactMe at semitwist.com
Tue May 15 23:43:19 PDT 2012


This code:

------------------------------------------
import std.stdio;

struct Foo
{
    int val;

    @property bool empty() {
        return val >= 5;
    }

    @property int front() {
        return val;
    }

    void popFront() {
        val++;
    }
}

void main()
{
    Foo foo;
    foreach(val; foo)
        writeln(foo.val, " ", val);
}

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

Expected output:
0 0
1 1
2 2
3 3
4 4

Actual output:
0 0
0 1
0 2
0 3
0 4

It seems that foreach is iterating over an implicit copy of 'foo' instead of 
'foo' itself. Is this correct behavior, or a DMD bug?




More information about the Digitalmars-d-learn mailing list