Re: Idiomatic way to call base method in generic code

2015-05-25 Thread ketmar via Digitalmars-d-learn
On Mon, 25 May 2015 09:24:56 +, ZombineDev wrote: > alias can't refer to a nested member: > - > struct Point2 { > float x; > float y; > } > > struct Line2 { > Point2 start; > Point2 end; > > mixin Access; > > // alias x1 = this.start.x; <- this does

Re: Idiomatic way to call base method in generic code

2015-05-25 Thread ketmar via Digitalmars-d-learn
On Mon, 25 May 2015 09:24:56 +, ZombineDev wrote: > On Monday, 25 May 2015 at 07:57:49 UTC, ketmar wrote: >> i don't know why you want that, but something like this may do: >> >> auto callBaseMethod(string MTN, C, Args...) (inout C self, Args args) { >> alias FSC = BaseClassesTuple!(C)[0]; >

Re: Idiomatic way to call base method in generic code

2015-05-25 Thread Meta via Digitalmars-d-learn
On Monday, 25 May 2015 at 09:24:58 UTC, ZombineDev wrote: On Monday, 25 May 2015 at 07:57:49 UTC, ketmar wrote: i don't know why you want that, but something like this may do: auto callBaseMethod(string MTN, C, Args...) (inout C self, Args args) { alias FSC = BaseClassesTuple!(C)[0]; return

Re: Idiomatic way to call base method in generic code

2015-05-25 Thread ZombineDev via Digitalmars-d-learn
On Monday, 25 May 2015 at 07:57:49 UTC, ketmar wrote: i don't know why you want that, but something like this may do: auto callBaseMethod(string MTN, C, Args...) (inout C self, Args args) { alias FSC = BaseClassesTuple!(C)[0]; return mixin(`self.`~FSC.stringof~`.`~MTN~"(args)"); } writeln

Re: Idiomatic way to call base method in generic code

2015-05-25 Thread ketmar via Digitalmars-d-learn
On Sun, 24 May 2015 23:32:50 +, ZombineDev wrote: > I know I can call a base implementation of a method like in 3), but I > need to do it generically like in 2). Does anybody now how I can achieve > this? i don't know why you want that, but something like this may do: auto callBaseMethod(str

Re: Idiomatic way to call base method in generic code

2015-05-24 Thread ZombineDev via Digitalmars-d-learn
On Sunday, 24 May 2015 at 23:32:52 UTC, ZombineDev wrote: ... Small correction for clarity: void main() { Derived d = new Derived(); d.x = 13; d.y = 15; // 1) writeln(callMethod!(Derived, Derived.toString)(d)); <- Should print 15 // 2) writeln(callBaseMethod!(Derived, Deri