Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

quat_traits

Boost , ,

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

quat_traits

#include <boost/qvm/quat_traits.hpp>[ORIG_END] -->

namespace
boost
{
    namespace
    qvm
    {
        template <class Q>
        struct quat_traits
        {
            /*main template members unspecified*/
        };
        
        /*
        User-defined (possibly partial) specializations:
        
        template <>
        struct quat_traits<Q>
        {
            typedef /*user-defined*/ scalar_type;        
        
            template <int I> static inline scalar_type read_element( Quaternion const & q );        
            template <int I> static inline scalar_type & write_element( Quaternion & q );        
        };
        */
    }
}

quat_traitsшаблон должен быть специализирован для (определяемых пользователем) типов кватернионов, чтобы обеспечить возможность операций кватернионов, определенных в заголовках Boost QVM для объектов этих типов.

Примечание: типы кватернионов не требуются для копирования.

Главнаяquat_traitsне уточняется. Для определения следующих членов требуются действительные специализации:

  • scalar_type: выражениеquat_traits:Scalar_typeдолжен быть типом значения, который удовлетворяет скалярным требованиям..

Кроме того, действующие специализацииquat_traitsшаблон должен определять по меньшей мере одну из следующих функций доступа в качестве статических членов, гдеqявляется объектом типа Quaternion, аIявляется целочисленной константой времени компиляции:

Примечание:Для кватернионаa + bi + cj + dkэлементы предполагаются в следующем порядке:a,b,c,d; то естьI=0/1/2/3имели бы доступa/b/c/d.

Незаконно называть любую из вышеперечисленных функций, еслине является_quat::value'истинно. Даже тогда кватернионным типам разрешается определять только подмножество функций доступа.

Ниже приведен пример определяемого пользователем типа кватерниона и его соответствующей специализации шаблонаquat_traits:

#include <boost/qvm/quat_traits.hpp>
struct fquat { float a[4]; };
namespace boost
{
    namespace qvm
    {
        template <>
        struct
        quat_traits<fquat>
        {
            typedef float scalar_type;
            template <int I> static inline scalar_type & write_element( fquat & q ) { return q.a[I]; }
            template <int I> static inline scalar_type read_element( fquat const & q ) { return q.a[I]; }
        };
    }
}

Статья quat_traits раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:59:39/0.0035998821258545/0