namespace
boost
{
namespace
qvm
{
template <class V>
struct vec_traits
{
/*main template members unspecified*/
};
/*
User-defined (possibly partial) specializations:
template <>
struct vec_traits<V>
{
static int const dim = /*user-defined*/; typedef /*user-defined*/ scalar_type; template <int I> static inline scalar_typeread_element( Vector const & v ); template <int I> static inline scalar_type & write_element( Vector & v ); static inline scalar_typeread_element_idx( int i, Vector const & v ); static inline scalar_type & write_element_idx( int i, Vector & v );
};
*/
}
}
Шаблонvec_traitsдолжен быть специализирован для (определяемых пользователем) типов векторов, чтобы включить векторные и матричные операции, определенные в заголовках Boost QVM для объектов этих типов.
Примечание: типы векторов не требуются для копирования.
Основныеvec_traitsчлены шаблона не указаны. Для определения следующих членов требуются действительные специализации:
дим: Выражениеvec_traits<Вектор>::тусклыйнеобходимо оценить до целочисленной константы времени компиляции, превышающей 0, которая определяет размер вектора.
Кроме того, действующие специализацииvec_traitsшаблон может определять следующие функции доступа в качестве статических членов, гдеvявляется объектом типаВектор,Iявляется целочисленной константой времени компиляции, аiявляется переменной типаint:
Незаконно называть любую из вышеперечисленных функций, еслине является_vec::значениеявляетсяистинным. Векторные типы могут определять только подмножество функций доступа. Общими требованиями являются:
Статья vec_traits раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.