digitalmars.D.bugs - offsetof fails when parameter to a template
- Mark Guidarelli (18/18) Feb 03 2007 import std.stdio;
- Mark Guidarelli (19/19) Feb 05 2007 When I change line 20 to "output((foo!(int)).b.offsetof);" it compiles p...
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); }
Feb 03 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); }
Feb 05 2007