My try so far:import std.traits: isCallable, ReturnType, arity, ParameterTypeTuple;
enum arityMin0(alias fun) = __traits(compiles, fun()); // new syntax in 2.064
auto repeat(alias fun)(size_t n) if (isCallable!fun &&
arityMin0!fun &&
!is(ReturnType!fun == void))
{
import std.range: iota, map;
return n.iota.map!(n => fun);
}
