With dmd 2.066.1, this compiles: void bar(scope int delegate() a) @nogc {}
void foo(int x) @nogc { bar(() => x); } but this doesn't: void bar(alias a)() {} void foo(int x) @nogc { bar!(() => x)(); } Fails with Error: function test.foo @nogc function allocates a closure with the GC Is there any way to pass a delegate that: 1. avoids indirect calls (like alias); 2. does not allocate (like scope delegate); 3. captures local variables?