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());
}


Reply via email to