
Jason Hise <chaos@ezequal.com> writes:
I saw that boost already has a pretty impressive linear algebra suite, with many specialized types of matrices. Though these are all very useful, I was wondering if there might be room for one more type of matrix: one which makes each size of matrix a unique type (I did not see such a matrix in the docs, but please correct me if I overlooked it and it does already exist). Using such matrices, it would be possible to validate the legality of certain operations at compile time (for instance, only matrices of compatible sizes can be multiplied). A very stripped down version of the class might look like this:
template < typename T, unsigned int X, unsigned int Y > class matrix { // maintains Y rows, each containing X Ts internally };
template < typename T, unsigned int X, unsigned int Y, unsigned int Z > matrix < T, Z, Y > operator * ( const Matrix < T, X, Y > & lhs, const Matrix < T, Z, X > & rhs ); // multiplication defined only for compatible matrices
Is there any interest in such a class?
The MTL project will certainly include a fixed-size matrix. http://www.boost-consulting.com/projects/mtl -- Dave Abrahams Boost Consulting www.boost-consulting.com