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

Policy Class Reference

Boost , Math Toolkit 2.5.0 , Policy Reference

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

PrevUpHomeNext

Здесь очень мало что можно сказать, класс<policy>- это просто контейнер времени компиляции для набора политик:

#include <boost/math/policies/policy.hpp>
namespace boost{
namespace math{
namespace policies
template <class A1 = default_policy,
          class A2 = default_policy,
          class A3 = default_policy,
          class A4 = default_policy,
          class A5 = default_policy,
          class A6 = default_policy,
          class A7 = default_policy,
          class A8 = default_policy,
          class A9 = default_policy,
          class A10 = default_policy,
          class A11 = default_policy,
          class A12 = default_policy,
          class A13 = default_policy>
struct policy
{
public:
   typedef computed-from-template-arguments domain_error_type;
   typedef computed-from-template-arguments pole_error_type;
   typedef computed-from-template-arguments overflow_error_type;
   typedef computed-from-template-arguments underflow_error_type;
   typedef computed-from-template-arguments denorm_error_type;
   typedef computed-from-template-arguments rounding_error_type;
   typedef computed-from-template-arguments evaluation_error_type;
   typedef computed-from-template-arguments indeterminate_result_error_type;
   typedef computed-from-template-arguments precision_type;
   typedef computed-from-template-arguments promote_float_type;
   typedef computed-from-template-arguments promote_double_type;
   typedef computed-from-template-arguments discrete_quantile_type;
   typedef computed-from-template-arguments assert_undefined_type;
};
template <...argument list...>
typename normalise<policy<>, A1>::type make_policy(...argument list..);
template <class Policy,
          class A1 = default_policy,
          class A2 = default_policy,
          class A3 = default_policy,
          class A4 = default_policy,
          class A5 = default_policy,
          class A6 = default_policy,
          class A7 = default_policy,
          class A8 = default_policy,
          class A9 = default_policy,
          class A10 = default_policy,
          class A11 = default_policy,
          class A12 = default_policy,
          class A13 = default_policy>
struct normalise
{
   typedef computed-from-template-arguments type;
};

Типовые обозначения класса<policy>предназначены для внутреннего использования, но кратко описаны здесь для полноты.

policy<...>::domain_error_type

Определение того, как обрабатываются ошибки домена, будет примером<boost::math::policies::domain_error<>>с аргументом шаблона к<domain_error>одному из перечисленных значений<error_policy_type>.

policy<...>::pole_error_type

Указывает, как обрабатываются поул-ошибки, будет примером<boost::math::policies::pole_error<>>с шаблонным аргументом<pole_error>к одному из<error_policy_type>перечисленных значений.

policy<...>::overflow_error_type

Указывает, как обрабатываются ошибки переполнения, будет примером<boost::math::policies::overflow_error<>>с аргументом шаблона<overflow_error>одному из<error_policy_type>перечисленных значений.

policy<...>::underflow_error_type

Указывает, как обрабатываются ошибки оттока, будет примером<boost::math::policies::underflow_error<>>с шаблонным аргументом<underflow_error>одному из перечисленных<error_policy_type>значений.

policy<...>::denorm_error_type

Указывает, как обрабатываются ошибки денорма, будет экземпляр<boost::math::policies::denorm_error<>>с шаблонным аргументом<denorm_error>к одному из<error_policy_type>перечисленных значений.

policy<...>::rounding_error_type

Указывает, как обрабатываются ошибки округления, будет примером<boost::math::policies::rounding_error<>>с аргументом шаблона<rounding_error>одному из<error_policy_type>перечисленных значений.

policy<...>::evaluation_error_type

Указывает, как обрабатываются ошибки оценки, будет экземпляр<boost::math::policies::evaluation_error<>>с шаблонным аргументом<evaluation_error>одному из<error_policy_type>перечисленных значений.

policy<...>::indeterminate_error_type

Указывает, как обрабатываются неопределенные ошибки результата, будет примером<boost::math::policies::indeterminate_result_error<>>с аргументом шаблона<indeterminate_result_error>одному из<error_policy_type>перечисленных значений.

policy<...>::precision_type

Указывает внутреннюю точность для использования в двоичных цифрах (использует ноль, чтобы представить то, что является точностью по умолчанию).<boost::math::policies::digits2<N>>, который, в свою очередь, наследует<boost::mpl::int_<N>>.

policy<...>::promote_float_type

Указывает, следует ли продвигать<float>аргументы<double>с точностью внутри. Это будет пример<boost::math::policies::promote_float<B>>, который в свою очередь наследует от<boost::mpl::bool_<B>>.

policy<...>::promote_double_type

Указывает, следует ли продвигать<double>аргументы к<longdouble>точности внутри.<boost::math::policies::promote_float<B>>, который, в свою очередь, наследует<boost::mpl::bool_<B>>.

policy<...>::discrete_quantile_type

Указывается, как оцениваются дискретные квантили, будет экземпляр<boost::math::policies::discrete_quantile<>>, инстанцированный одним из перечисленных<discrete_quantile_policy_type>типов.

policy<...>::assert_undefined_type

Указывает, утверждаются ли математически неопределенные свойства как ошибки времени компиляции или рассматриваются как ошибки времени выполнения. Это будет<boost::math::policies::assert_undefined<B>>, который, в свою очередь, наследует<boost::math::mpl::bool_<B>>.

template <...argument list...>
typename normalise<policy<>, A1>::type make_policy(...argument list..);

<make_policy>— вспомогательная функция, которая преобразует список политик в нормализованный<policy>класс.

template <class Policy,
          class A1 = default_policy,
          class A2 = default_policy,
          class A3 = default_policy,
          class A4 = default_policy,
          class A5 = default_policy,
          class A6 = default_policy,
          class A7 = default_policy,
          class A8 = default_policy,
          class A9 = default_policy,
          class A10 = default_policy,
          class A11 = default_policy,
          class A12 = default_policy,
          class A13 = default_policy>
struct normalise
{
   typedef computed-from-template-arguments type;
};

Шаблон класса<normalise>превращает одну инстанциацию класса<policy>в нормализованную форму. Это используется внутри, чтобы уменьшить вздутие кода: так что инстанцирование специальной функции на<policy<A,B>>или<policy<B,A>>фактически генерирует один и тот же код внутри.

Более того,<normalise>можно использовать для объединения политики с одной или несколькими политиками: например, многие из специальных функций будут использовать это для установки политик, которые они не используют для своих значений по умолчанию, прежде чем перенаправлять на фактическую реализацию. Таким образом, раздувание кода уменьшается, поскольку фактическая реализация зависит только от типов политики, которые они фактически используют.


PrevUpHomeNext

Статья Policy Class Reference раздела Math Toolkit 2.5.0 Policy Reference может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Policy Reference ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 04:16:52/0.0046679973602295/0