struct Foo { int opApply( int delegate(size_t, int) shared scope) shared { return 0; } } void main() { shared Foo foo; foreach(i, e; foo) { } } test.d(11): Error: function `test.opApply(int delegate(ulong, int) shared scope _param_0) shared` is not callable using argument types `(int delegate(ulong i, int e) pure nothrow @nogc @safe) shared` test.d(11): cannot pass argument `__foreachbody2` of type `int delegate(ulong i, int e) pure nothrow @nogc @safe` to parameter `int delegate(ulong, int) shared scope _param_0` expected: no error
@thewilsonator created dlang/dmd pull request #12290 "Fix issue 21737: shared opApply does not compile" fixing this issue: - Fix issue 21737: shared opApply does not compile https://github.com/dlang/dmd/pull/12290