import std.algorithm;
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()
void main(){
//alias fun2=fun!int; //OK but needs to specify template params
//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]));
}