offsetof fails when parameter to a template

Mark Guidarelli guido at grumpy-cat.com
Mon Feb 5 23:10:05 PST 2007


When I change line 20 to "output((foo!(int)).b.offsetof);" it compiles properly.  Looking at the grammar I believe the original version was valid though.



import std.stdio;

struct foo(T) {
 int a;
 T b;
 int c;
}

void output(int offset) {
 writefln("offset = ", offset);
}

void main() {
 // works
 alias foo!(int) bar;
 output(bar.b.offsetof);
 // fails
 // test.d(20): Error: 'this' is only allowed in non-static member functions, not main
 // test.d(20): Error: this for b needs to be type foo not type int
 output(foo!(int).b.offsetof);
}


More information about the Digitalmars-d-bugs mailing list