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