
I'd suggest using Rows and Cols as arguments of the template instead of M and N.
I agree.
IMO the abstraction provided by a template <typename T,size_t Rows,size_t Cols> class matrix is unnecessary and will only get in the way for computer graphics applications. I've seen several attempts like this at generalizing matrices for game engine use getting scrapped and refactored to a more traditional set of types (not templates) and functions (this doesn't mean that such generalizations are not appropriate in general.)
And maybe it's not surprising that these attempts failed. It's not that easy to get the generalization exactly right. In a production environment it makes sense to just write some ad-hoc types rather than spend months on the perfect matrix class; but I do expect this sort of care in a Boost library. Anyway I personally could care less about computer graphics, fixed-size matrices are also useful in computer vision, robotics, and no doubt other domains. Kornel's application looks quite good to me; it would be terrific to see some real review-ready code come out of this. -Patrick