Following code doesn't compile. ---- template StaticArrayOf(T : E[dim], E, size_t dim) { pragma(msg, "T = ", T, ", E = ", E, ", dim = ", dim); alias E[dim] StaticArrayOf; } template DynamicArrayOf(T : E[], E) { pragma(msg, "T = ", T, ", E = ", E); alias E[] DynamicArrayOf; } template AssocArrayOf(T : V[K], K, V) { pragma(msg, "T = ", T, ", K = ", K, ", V = ", V); alias V[K] AssocArrayOf; } void main() { struct SA { int[5] sa; alias sa this; } static assert(is(StaticArrayOf!SA == int[5])); struct DA { int[] da; alias da this; } static assert(is(DynamicArrayOf!DA == int[])); struct AA { int[string] aa; alias aa this; } static assert(is(AssocArrayOf!AA == int[string])); }
https://github.com/D-Programming-Language/dmd/pull/565
https://github.com/D-Programming-Language/dmd/commit/641c83f5fbe3b3341168f5b5b61643393f9d1860