Boost LA

vec

#include <boost/la/vec.hpp>

namespace
boost
    {
    namespace
    la
        {
        template <class T,int Dim>
        struct
        vec
            {
            T a[Dim];
        
            template <class R>
            operator R() const
                {
                R r;
                assign(r,*this);
                return r;
                }
            };
        }
    }

This is a simple vector type. It converts to any other vector type of compatible size.