S.popFront is not @safe, and S is not a template. So no inferrence.
Oops, minimized a bit too much. Corrected test case: ``` import std;
struct S { @safe: int[3] front = [10, 20, 30]; bool empty = false; void popFront() {empty = true;} } void main() @safe { S.init.map!((return ref x) => x[]).joiner.writeln; } ```It indeed still errors with -dip1000, but without -dip1000 it compiles now interestingly.