<p><br>
per.nordlow:<br>
><br>
> My try so far:<br>
><br>
> import std.traits: isCallable, ReturnType, arity, ParameterTypeTuple;<br>
><br>
> enum arityMin0(alias fun) = __traits(compiles, fun()); // new syntax in 2.064<br>
><br>
> auto repeat(alias fun)(size_t n) if (isCallable!fun &&<br>
>                                      arityMin0!fun &&<br>
><br>
>                                      !is(ReturnType!fun == void))<br>
> {<br>
>     import std.range: iota, map;<br>
>     return n.iota.map!(n => fun);<br>
> }</p>
<p>For a nullary function, this solution is certainly OK: short and understandable.<br>
I found a way to parse an entire function param list, including default args, but I don't remember right now how I did that. Maybe by parsing 'fun.stringof'<br>
Maybe this exists in Phobos now?</p>
<p>btw, I'd call this template 'apply', because repeat already exists in Phobos with a different use. </p>