On 06/05/14 08:58, Timothee Cour via Digitalmars-d-learn wrote: > Is there a way to do this? > > auto fun(T)(T a){return a;} > > template fun2(T){auto fun2(T a){return fun(a);}}//OK but heavy syntax and > cannot be nested inside test() alias fun2(T) = fun!T;
But this will prevent IFTI, so you'd either need to use 'fun2!int' or introduce another alias ... > void main(){ > //alias fun2=fun!int; //OK but needs to specify template params ... like this one. If you want the params inferred, then static auto ref fun2(A...)(A a) { return fun(a); } will mostly work. [1] > //none of those work: > //alias fun2=a=>fun(a); > //alias fun2(T)=(T a)=>fun(a); > //alias fun2(T)=(T a){return fun(a);} > auto b=[1].map!fun2; > assert(b.equal([1])); > } > artur [1] no perfect forwarding; there's no terse way to do that in D.