Sorry, I have to correct it :
R delegate(U) Curry1(R,X,U...)(R delegate(X,U) dg,X arg)
{
struct Foo
{
typeof(dg) dg_m;
X arg_m;
R bar(U args)
{
return dg_m(arg_m,args);
}
}
Foo* f = new Foo;
f.dg_m = dg;
f.arg_m = arg;
return &f.bar;
}