--- struct Oops { int convert() { *cast(int*)0xcafebabe = 0xdeadbeef; return 0; } alias convert this; } void main() @safe { import std.parallelism; static void foo(int) @safe {} auto t = task(&foo, Oops.init); // or: auto t = scopedTask(&foo, Oops.init); taskPool.put(t); } --- Tested with current Git master (4de96a06, to-be 2.067), but looks like the issues has been present since the initial merge of std.parallelism. Again a case of @trusted used on a template function without sufficient constraints.
@ntrel created dlang/phobos pull request #9033 "Fix Bugzilla 14138 - std.parallelism.task breaks @safety" fixing this issue: - Fix Bugzilla 14138 - std.parallelism.task breaks @safety https://github.com/dlang/phobos/pull/9033
dlang/phobos pull request #9033 "Fix Bugzilla 14138 - std.parallelism.task breaks @safety" was merged into master: - 1ca9f47d105267d5b4366f8c5fb5ec4055f4acfd by Nick Treleaven: Fix Bugzilla 14138 - std.parallelism.task breaks @safety https://github.com/dlang/phobos/pull/9033