No, it is intended. In `void foo(T, size_t dim)(T[3], a1, T[dim] a2) {}`, `T[3]` is Tsarray, and `T[dim]` is Taarray.