I can't invent a good name for this bug. This looks valid CTFE code, but it doesn't compile: int foo1(int n)(int[n] array) { foreach (el; array) {} return 0; } int foo2(int n)(int[n] array) { for (int i; i < n; i++) { int el = array[i]; } return 0; } int spam() { int[1] array; enum int i1 = foo1(array); enum int i2 = foo2(array); return 0; } enum int r = spam(); void main() {} Errors produced: test.d(12): Error: cannot cast int to int[] test.d(12): Error: cannot cast int to int[] test.d(12): Error: cannot cast int to int[] test.d(13): Error: cannot evaluate foo1(array) at compile time test.d(13): Error: cannot evaluate foo1(array) at compile time
This was fixed in DMD2.042.