www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Duplicate another function's parameters in a template function

reply "Tofu Ninja" <emmons0 purdue.edu> writes:
I am trying to write a template function that can take another 
function as an alias template argument and duplicate its 
parameters for it self.

For example, something like this...

void foo(ref int x){x = 7;}

auto pass(alias f)(/* ??? */)
{
     // other stuff...
     return f( /* ??? */ );
}

void main()
{
     int y = 0;
     pass!foo(y);
     assert(y==7);
}


I tried..

auto pass(alias f, T...)(T t)
{
     // other stuff...
     return f(t);
}

but that does not work if there is a ref parameter.

Thanks
Apr 20 2015
parent reply Justin Whear <justin economicmodeling.com> writes:
On Mon, 20 Apr 2015 22:50:52 +0000, Tofu Ninja wrote:

 I am trying to write a template function that can take another function
 as an alias template argument and duplicate its parameters for it self.
 
 I tried..
 
 auto pass(alias f, T...)(T t)
 {
      // other stuff... return f(t);
 }
 
 but that does not work if there is a ref parameter.
 
 Thanks
See std.functional.forward: http://dlang.org/phobos/std_functional.html#.forward
Apr 20 2015
parent "Tofu Ninja" <emmons0 purdue.edu> writes:
On Monday, 20 April 2015 at 23:20:07 UTC, Justin Whear wrote:
 See std.functional.forward:
 http://dlang.org/phobos/std_functional.html#.forward
Sweet beans, thanks
Apr 20 2015