On Friday, 7 September 2012 at 17:32:43 UTC, Ellery Newcomer wrote:
On 09/07/2012 10:31 AM, Ellery Newcomer wrote:
I have a struct buffer, and I want to print out its members' offsetof.

This:

foreach(i,_t; buffer.tupleof) {
            writefln("%s@: %s", _t.stringof, _t.offsetof);
        }

complains

Error: undefined identifier 'offsetof'

what should I be doing?

nevermind, I remember tupleof + foreach has always been broken

writefln("%s@: %s", buffer.tupleof[i].stringof, buffer.tupleof[i].offsetof);

I think this is expected behavior.
In foreach body, _t is a copy of field value, and it's not buffer's field itself.

Your code is equivalent with:

    foreach(i,_; buffer.tupleof) {
        auto _t = buffer.tupleof[i];    // _t is a normal variable
        writefln("%s@: %s", _t.stringof, _t.offsetof);
    }

Then you cannot get offsetof property from _t;

Regards.

Kenji Hara

Reply via email to