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.