Boost QVM

Type Traits

#include <boost/qvm/q_traits.hpp> 
#include <boost/qvm/m_traits.hpp> 
#include <boost/qvm/v_traits.hpp> 

namespace
boost
    {
    namespace
    qvm
        {
        //*** Type traits ***
        
        template <class T>
        struct is_q
        {
            static bool const value=/*unspecified*/;
        };        
        
        template <class Q>
        struct q_traits
        {
            /*main template members unspecified*/
        };
        
        /*
        User-defined (possibly partial) specializations:
        
        template <>
        struct q_traits<Q>
        {
            typedef /*user-defined*/ scalar_type;        
        
            template <int I> static inline scalar_type r( Quaternion const & q );        
            template <int I> static inline scalar_type & w( Quaternion & q );        
        };
        */        
        
        template <class T>
        struct is_v
        {
            static bool const value=/*unspecified*/;
        };        
        
        template <class V>
        struct v_traits
        {
            /*main template members unspecified*/
        };
        
        /*
        User-defined (possibly partial) specializations:
        
        template <>
        struct v_traits<V>
        {
            static int const dim = /*user-defined*/;        
            typedef /*user-defined*/ scalar_type;        
        
            template <int I> static inline scalar_type r( Vector const & v );        
            template <int I> static inline scalar_type & w( Vector & v );        
        
            static inline scalar_type ir( int i, Vector const & v );        
            static inline scalar_type & iw( int i, Vector & v );        
        };
        */        
        
        template <class T>
        struct is_m
        {
            static bool const value=/*unspecified*/;
        };        
        
        template <class M>
        struct m_traits
        {
            /*main template members unspecified*/
        };
        
        /*
        User-defined (possibly partial) specializations:
        
        template <>
        struct m_traits<M>
        {
            static int const rows = /*user-defined*/;        
            static int const cols = /*user-defined*/;        
            typedef /*user-defined*/ scalar_type;        
        
            template <int R,int C> static inline scalar_type r( Matrix const & m );        
            template <int R,int C> static inline scalar_type & w( Matrix & m );        
        
            static inline scalar_type ir( int r, int c, Matrix const & m );        
            static inline scalar_type & iw( int r, int c, Matrix & m );        
        };
        */
        }
    }

See also: Boost QVM | Synopsis