[Issue 5710] cannot use delegates as parameters to non-global template
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Nov 17 08:52:06 PST 2013
https://d.puremagic.com/issues/show_bug.cgi?id=5710
Martin Nowak <code at dawg.eu> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |code at dawg.eu
--- Comment #25 from Martin Nowak <code at dawg.eu> 2013-11-17 08:51:48 PST ---
(In reply to comment #9)
> My idea:
> doStuff receives a context pointer that points 'an array of context pointers'.
> Backend receives code like follows...
>
> uint doStuff(alias fun)(uint a, uint b, void** this) // not void* this
> {
> // (*this + 0) points the object Foo
> // (*this + 1) points the stack frame of main()
>
> //return fun(a, b);
> return fun(a, b, (*this + 1));
> }
>
> Caller of doStuff have to create array of context pointers.
>
> void main(){
> ...
> //foo.doStuff!add(1, 2);
> void*[2] thisarray = [(stack frame of main), foo];
> doStuff(a, b, thisarray.ptr);
> }
Good to see, that you already know this solution.
I think the biggest hurdle to implement is teaching the IR/backend to get
doStuff's this pointer from an array.
--
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list