123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #ifndef BOOST_NUMERIC_INTERVAL_POLICIES_HPP
- #define BOOST_NUMERIC_INTERVAL_POLICIES_HPP
- #include <boost/numeric/interval/interval.hpp>
- namespace boost {
- namespace numeric {
- namespace interval_lib {
- template<class Rounding, class Checking>
- struct policies
- {
- typedef Rounding rounding;
- typedef Checking checking;
- };
- template<class OldInterval, class NewRounding>
- class change_rounding
- {
- typedef typename OldInterval::base_type T;
- typedef typename OldInterval::traits_type p;
- typedef typename p::checking checking;
- public:
- typedef interval<T, policies<NewRounding, checking> > type;
- };
- template<class OldInterval, class NewChecking>
- class change_checking
- {
- typedef typename OldInterval::base_type T;
- typedef typename OldInterval::traits_type p;
- typedef typename p::rounding rounding;
- public:
- typedef interval<T, policies<rounding, NewChecking> > type;
- };
- template<class OldInterval>
- class unprotect
- {
- typedef typename OldInterval::base_type T;
- typedef typename OldInterval::traits_type p;
- typedef typename p::rounding r;
- typedef typename r::unprotected_rounding newRounding;
- public:
- typedef typename change_rounding<OldInterval, newRounding>::type type;
- };
- }
- }
- }
- #endif
|