Mariusz `shd` Gliwiński:
As described on
http://wiki.dlang.org/Dense_multidimensional_arrays we can have
dense and jagged arrays.
Built-in D arrays are always dense (unless you consider the
associative arrays). That page should name them "contiguous".
Sparse arrays are another thing, and they need to be implemented
in libraries:
http://en.wikipedia.org/wiki/Sparse_array
Is it possible to check if an array is jagged or not by using
some template like std.traits : isArray ?
To tell if a dynamic array is jagged you need a run-time tests,
something like this:
foreach (const row; matrix)
assert(row.length == matrix.front.length);
If you want to tell apart a regular dynamic array from the
contiguous one, you have to look at the array structure, all
dimensions but the last one need to be fixed-sized arrays. There
are traits to tell apart fixed sized arrays and dynamic ones, but
you need a recursive template. Why do you need this information?
So far I have not needed it.
Bye,
bearophile