3) Ditch extra constructors, they're completely unnecessary. For matrix you only need your non-trivial ctor, postblit and lvalue assignment operator.
Actually rvalue opAssign would be even better :)Also, I forgot to remove it in the code, but that explicit ctor for Dimension is completely unnecessary too.