| |
 | Posted by Kenji Hara in reply to Ellery Newcomer | Permalink Reply |
|
Kenji Hara 
Posted in reply to Ellery Newcomer
| 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
|