Just to understand what's going on, I wrote this program:

```d
import std.stdio;

struct S
{
    bool empty;
    int front() { return 2+2; }
    void popFront() {}
}

void main()
{
    S s;
    foreach (ref i; s)
    {
        i++;
        writeln(i);
        break;
    }
}
```

It seems to work?