https://issues.dlang.org/show_bug.cgi?id=17635
--- Comment #7 from Walter Bright <bugzi...@digitalmars.com> --- The trouble with the getIndirection() is that passing a type: int* and: struct S { int* p; } behave differently. The first passes 'int' to traverseIndirections(), losing the *, the second passes 'S', keeping the *. There's just no way to make that work consistently. Kenji had papered it over, which created the bug ag0ep6g found. But when I fixed that one, then this one (from testInference.d) started passing when it should fail: struct S2 { const(int)* ptr; } immutable(S2) foo2b(const int*[] prm) pure { S2 s; return s; } I can't make both work because of the getIndirection() inconsistency. --