Well, it would be easy if the N was always the total depth. But in this case, it represents a user defined depth-terminator, eg. if one wants to allocate an array whose elements are arrays themselves. For example, when one calls:

```D
minimallyArray!(int[][][])(5, 5);
```

Then we use `NElementEncodingType!(int[][][], 2)` to know that the "ElementType" is `int[]` (and not `int`). So we can't do without that information.