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);
}