T &operator()(unsigned i, unsigned j) { return element(i, j); }
const T &operator()(unsigned i, unsigned j) const { return element(i, j); }
+ Vector<T, M> column(unsigned i) const { return Vector<T, M>(data+M*i); }
+ Vector<T, N> row(unsigned i) const { return Vector<T, N>(data+i, M); }
+
template<unsigned P, unsigned Q>
Matrix<T, P, Q> select(const Vector<unsigned, P> &, const Vector<unsigned, Q> &) const;