Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

QVM: Quaternions, Vectors, Matrices

is_mat

#include <boost/qvm/mat_traits.hpp>

namespace
boost
{
    namespace
    qvm
    {
        template <class T>
        struct is_mat
        {
            static bool const value=/*unspecified*/;
        };
    }
}

This type template defines a compile-time boolean constant value which can be used to determine whether a type T is a matrix type. For matrix types, the mat_traits template can be used to access their elements generically, or to obtain their dimensions and scalar type.