"this" member for structs with methods

simendsjo simendsjo at gmail.com
Sun Mar 17 07:27:31 PDT 2013


On Sunday, 17 March 2013 at 13:30:29 UTC, Maxim Fomin wrote:
> On Sunday, 17 March 2013 at 12:16:08 UTC, simendsjo wrote:
>> When a struct contains methods, __traits(allMembers reports a 
>> member called "this". What is "this"?
>>
>> void main() {
>>    struct S { int i; }
>>    struct A { int i; void f() {} }
>>    pragma(msg, __traits(allMembers, S)); // i
>>    pragma(msg, __traits(allMembers, A)); // i, f, this
>> }
>
> This is context pointer. Move outside of function to not to 
> have it.

Should it be included? The documentation is a bit sparse: 
http://dlang.org/traits.html#allMembers, but every member listed 
there are methods in the class or from Object. No hidden this or 
vtbl shows in the example.


More information about the Digitalmars-d-learn mailing list