February 04, 2007 offsetof fails when parameter to a template | ||||
---|---|---|---|---|
| ||||
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); } |
February 06, 2007 Re: offsetof fails when parameter to a template | ||||
---|---|---|---|---|
| ||||
Posted in reply to Mark Guidarelli | 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); } |
Copyright © 1999-2021 by the D Language Foundation