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

scalar_cast(vec)

#include <boost/qvm/vec_operations.hpp>

namespace boost
{
    namespace qvm
    {
        //Only enabled if: is_vec<A>::value
        template <class Scalar,class A>
        -unspecified-return_type- scalar_cast( A const & a );
    }
}

Returns:

A read-only view proxy of a that looks like a vector of the same dimensions as a, but with scalar_type Scalar and elements constructed from the corresponding elements of a.