The code in Ex.1 compiles and runs fine but I think it needs a cast: --- // Ex.1 void main() { int[] a=[1,2,3,4]; int[2][2] b = a; } --- Array assignment in Ex.2 only works with a cast: --- // Ex.2 void main() { int[] a=[1,2,3,4]; int[2][2] b; b = a; // Compile time error cast(int[4])b = a; // works ok } --- I think it should be consistent, preferably with a cast. Thanks, ed
I'm not sure how to do the cast on initialisation though: --- // Ex.1 void main() { int[] a=[1,2,3,4]; int[2][2] b = a; } --- Would it be: int[2][2] b = cast(int[2][2])a; but it does not match the existing casts required for assignment: cast(int[4])b = a; Maybe just disallow code as per Ex.1 and only allow the cast assignment from Ex.2? Thanks, ed
The code in Ex1 now yields: test.d(4): Error: cannot implicitly convert expression `a` of type `int[]` to `int[2][]` Closing as fixed.