template isStaticArray(T : U[N], U, size_t N) { enum bool isStaticArray = true; } template isStaticArray(T) { enum bool isStaticArray = false; } struct Matrix { float[3][3] _data; alias _data this; } static assert(!isStaticArray!Matrix); // isStaticArray!Matrix is true now --------- This piece of code changed it's semantics with the recent dmd changes. Just wanted to make sure that this is deliberate.
The report is bug 7124.
This is likely OK. I just saw that the T of T : U[N] will still bind to Matrix, so the full type information is preserved.