On 02/27/2017 01:35 AM, Bastiaan Veelo wrote:
template eval_all(funcs...)
{
    void eval_all(int val)
    {
        import std.parallelism;
        //foreach (i, f; parallel(funcs))    // Tries to evaluate f(void)
        foreach (i, f; funcs)    // How do I parallelise this?
            values[i] = f(val);
    }
}

Make a range or an array of function pointers from the AliasSeq of function aliases:

----
import std.meta: staticMap;
import std.range: only;

enum fptr(alias f) = &f;
enum fptrs = staticMap!(fptr, funcs);
auto r = only(fptrs);

foreach (i, f; parallel(r))
    values[i] = f(val);
----

Reply via email to