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.

Reply via email to