Internal delegate and Stack Overflow
    BCS 
    ao at pathlink.com
       
    Fri Nov 28 16:49:20 PST 2008
    
    
  
Reply to TSalm,
> Yes, you are right.
> But this is an example code. The "true" code uses delegates with
> argument
> which differs from called functions, so I can't point delegate
> directly to
> them.
> And this anonymous function's way is really fastest to code... I must
> waiting for a D2 stable version ;-)
> Thanks
> 
you can store off the values you need like this:
struct C(R, A...)
{
   A args;
   R function(A) dg;
   static R delegate() opCall(R function(A) dg, A a)
   {
      C!(R, A) ret;
      ret.dg=dg;
      foreach(int i,_;A)
         ret.args[i] = a[i];
      return &ret.fn;
   }
   R fn() { return dg(args); }
}
// test it
import std.stdio;
int delegate() dg(int i)
{
   return C!(int,int)(function int(int j){return j;}, i);   // <--- used here
}
void main()
{
   auto d = dg(5);
   writef("%s\n", d());
}
    
    
More information about the Digitalmars-d-learn
mailing list