With DMD 2.057, all three overrides fail: class A{ void foo(immutable(int)[] x){} immutable(int)[] bar(immutable(int)[] x){return x;} immutable(int) qux(immutable(int) y){return y;} } class B: A{ override void foo(const(int)[] x){} override inout(int)[] bar(inout(int)[] x){return x;} override int qux(int y){return y;} } The code should compile.
Parameter contravariance again. *** This issue has been marked as a duplicate of issue 3075 ***