Thread overview
Duplicate another function's parameters in a template function
Apr 20, 2015
Tofu Ninja
Apr 20, 2015
Justin Whear
Apr 20, 2015
Tofu Ninja
April 20, 2015
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
April 20, 2015
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
April 20, 2015
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