[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