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








Mark Guidarelli <guido grumpy-cat.com>