diff options
| author | Remko Tronçon <git@el-tramo.be> | 2012-12-23 13:16:26 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2012-12-23 14:43:26 (GMT) | 
| commit | 491ddd570a752cf9bda85933bed0c6942e39b1f9 (patch) | |
| tree | 10c25c1be8cc08d0497df1dccd56a10fbb30beee /3rdParty/Boost/src/boost/numeric/conversion | |
| parent | da7d7a0ca71b80281aa9ff2526290b61ccb0cc60 (diff) | |
| download | swift-491ddd570a752cf9bda85933bed0c6942e39b1f9.zip swift-491ddd570a752cf9bda85933bed0c6942e39b1f9.tar.bz2 | |
Update Boost to 1.52.0.
Change-Id: I1e56bea2600bf2ed9c5b3aba8c4f9d2a0f350e77
Diffstat (limited to '3rdParty/Boost/src/boost/numeric/conversion')
6 files changed, 2286 insertions, 11 deletions
| diff --git a/3rdParty/Boost/src/boost/numeric/conversion/cast.hpp b/3rdParty/Boost/src/boost/numeric/conversion/cast.hpp index aa518e8..1ee0251 100644 --- a/3rdParty/Boost/src/boost/numeric/conversion/cast.hpp +++ b/3rdParty/Boost/src/boost/numeric/conversion/cast.hpp @@ -16,6 +16,7 @@  //    30 Oct 2001 Some fixes suggested by Daryle Walker (Fernando Cacciola)  //    25 Oct 2001 Initial boostification (Fernando Cacciola)  //    23 Jan 2004 Inital add to cvs (post review)s +//    22 Jun 2011 Added support for specializing cast policies via numeric_cast_traits (Brandon Kohn).  //  #ifndef BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP  #define BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP @@ -30,22 +31,31 @@  #include <boost/type.hpp>  #include <boost/numeric/conversion/converter.hpp> +#include <boost/numeric/conversion/numeric_cast_traits.hpp>  namespace boost  { -  template<typename Target, typename Source> -  inline -  Target numeric_cast ( Source arg ) -  { -    typedef boost::numeric::converter<Target,Source> Converter ; -    return Converter::convert(arg); -  } - -  using numeric::bad_numeric_cast; - +    template <typename Target, typename Source>  +    inline Target numeric_cast( Source arg ) +    { +        typedef numeric::conversion_traits<Target, Source>   conv_traits; +        typedef numeric::numeric_cast_traits<Target, Source> cast_traits; +        typedef boost::numeric::converter +            < +                Target, +                Source,  +                conv_traits, +                typename cast_traits::overflow_policy,  +                typename cast_traits::rounding_policy,  +                boost::numeric::raw_converter< conv_traits >, +                typename cast_traits::range_checking_policy +            > converter; +        return converter::convert(arg); +    } +     +    using numeric::bad_numeric_cast;  } // namespace boost  #endif -  #endif diff --git a/3rdParty/Boost/src/boost/numeric/conversion/converter_policies.hpp b/3rdParty/Boost/src/boost/numeric/conversion/converter_policies.hpp index b0d741b..e7a5e67 100644 --- a/3rdParty/Boost/src/boost/numeric/conversion/converter_policies.hpp +++ b/3rdParty/Boost/src/boost/numeric/conversion/converter_policies.hpp @@ -13,6 +13,7 @@  #include <typeinfo> // for std::bad_cast  #include <boost/config/no_tr1/cmath.hpp> // for std::floor and std::ceil +#include <boost/throw_exception.hpp>  #include <functional> @@ -158,10 +159,17 @@ struct def_overflow_handler  {    void operator() ( range_check_result r ) // throw(negative_overflow,positive_overflow)    { +#ifndef BOOST_NO_EXCEPTIONS      if ( r == cNegOverflow )        throw negative_overflow() ;      else if ( r == cPosOverflow )             throw positive_overflow() ; +#else +    if ( r == cNegOverflow ) +      ::boost::throw_exception(negative_overflow()) ; +    else if ( r == cPosOverflow ) +           ::boost::throw_exception(positive_overflow()) ; +#endif    }  } ; diff --git a/3rdParty/Boost/src/boost/numeric/conversion/detail/numeric_cast_traits.hpp b/3rdParty/Boost/src/boost/numeric/conversion/detail/numeric_cast_traits.hpp new file mode 100644 index 0000000..150490d --- /dev/null +++ b/3rdParty/Boost/src/boost/numeric/conversion/detail/numeric_cast_traits.hpp @@ -0,0 +1,138 @@ +// +//! Copyright (c) 2011-2012 +//! Brandon Kohn +// +//  Distributed under the Boost Software License, Version 1.0. (See +//  accompanying file LICENSE_1_0.txt or copy at +//  http://www.boost.org/LICENSE_1_0.txt) +// + +#if !defined(BOOST_NUMERIC_CONVERSION_DONT_USE_PREPROCESSED_FILES) + +    #include <boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp> +	 +	#if !defined(BOOST_NO_LONG_LONG) +        #include <boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp> +	#endif +	 +#else +#if !BOOST_PP_IS_ITERATING + +    #include <boost/preprocessor/seq/elem.hpp> +    #include <boost/preprocessor/seq/size.hpp> +    #include <boost/preprocessor/iteration/iterate.hpp> +     +    #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES) +        #pragma wave option(preserve: 2, line: 0, output: "preprocessed/numeric_cast_traits_common.hpp") +    #endif +// +//! Copyright (c) 2011-2012 +//! Brandon Kohn +// +//  Distributed under the Boost Software License, Version 1.0. (See +//  accompanying file LICENSE_1_0.txt or copy at +//  http://www.boost.org/LICENSE_1_0.txt) +// +    #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES) +        #pragma wave option(preserve: 1) +    #endif +	 +	//! These are the assumed common built in fundamental types (not typedefs/macros.) +	#define BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES() \ +        (char)                                            \ +        (signed char)                                     \ +        (unsigned char)                                   \ +        (short)                                           \ +        (unsigned short)                                  \ +        (int)                                             \ +        (unsigned int)                                    \ +        (long)                                            \ +        (unsigned long)                                   \ +        (float)                                           \ +        (double)                                          \ +        (long double)                                     \ +    /***/ +	 +    #define BOOST_NUMERIC_CONVERSION_SEQ_A() BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES() +	#define BOOST_NUMERIC_CONVERSION_SEQ_B() BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES() + +namespace boost { namespace numeric { + +    #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_NUMERIC_CONVERSION_SEQ_A())), <boost/numeric/conversion/detail/numeric_cast_traits.hpp>)) +    #include BOOST_PP_ITERATE()     + +}}//namespace boost::numeric; + +    #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES) +        #pragma wave option(output: null) +    #endif    +	 +	#if ( defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES) ) || !defined(BOOST_NO_LONG_LONG) +	 +	    #undef BOOST_NUMERIC_CONVERSION_SEQ_A +	    #undef BOOST_NUMERIC_CONVERSION_SEQ_B + +	    #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES) +            #pragma wave option(preserve: 2, line: 0, output: "preprocessed/numeric_cast_traits_long_long.hpp") +        #endif + +// +//! Copyright (c) 2011-2012 +//! Brandon Kohn +// +//  Distributed under the Boost Software License, Version 1.0. (See +//  accompanying file LICENSE_1_0.txt or copy at +//  http://www.boost.org/LICENSE_1_0.txt) +// +        #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES) +            #pragma wave option(preserve: 1) +        #endif + +namespace boost { namespace numeric { + +    #define BOOST_NUMERIC_CONVERSION_SEQ_A() BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()(boost::long_long_type)(boost::ulong_long_type) +	#define BOOST_NUMERIC_CONVERSION_SEQ_B() (boost::long_long_type)(boost::ulong_long_type) +     +    #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_NUMERIC_CONVERSION_SEQ_A())), <boost/numeric/conversion/detail/numeric_cast_traits.hpp>)) +    #include BOOST_PP_ITERATE()     + +}}//namespace boost::numeric; + +        #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES) +            #pragma wave option(output: null) +        #endif    +	 +	#endif +		 +    #undef BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES +	#undef BOOST_NUMERIC_CONVERSION_SEQ_A +	#undef BOOST_NUMERIC_CONVERSION_SEQ_B +     +#elif BOOST_PP_ITERATION_DEPTH() == 1 + +    #define BOOST_PP_ITERATION_PARAMS_2 (3, (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_NUMERIC_CONVERSION_SEQ_B())), <boost/numeric/conversion/detail/numeric_cast_traits.hpp>)) +    #include BOOST_PP_ITERATE() + +#elif BOOST_PP_ITERATION_DEPTH() == 2 + +    //! Generate default traits for the specified source and target. +    #define BOOST_NUMERIC_CONVERSION_A BOOST_PP_FRAME_ITERATION(1) +    #define BOOST_NUMERIC_CONVERSION_B BOOST_PP_FRAME_ITERATION(2) + +    template <> +    struct numeric_cast_traits +        < +            BOOST_PP_SEQ_ELEM(BOOST_NUMERIC_CONVERSION_A, BOOST_NUMERIC_CONVERSION_SEQ_A()) +          , BOOST_PP_SEQ_ELEM(BOOST_NUMERIC_CONVERSION_B, BOOST_NUMERIC_CONVERSION_SEQ_B()) +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<BOOST_PP_SEQ_ELEM(BOOST_NUMERIC_CONVERSION_B, BOOST_NUMERIC_CONVERSION_SEQ_B())> rounding_policy; +    };      + +    #undef BOOST_NUMERIC_CONVERSION_A +    #undef BOOST_NUMERIC_CONVERSION_B + +#endif//! Depth 2. +#endif// BOOST_NUMERIC_CONVERSION_DONT_USE_PREPROCESSED_FILES diff --git a/3rdParty/Boost/src/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp b/3rdParty/Boost/src/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp new file mode 100644 index 0000000..01dc932 --- /dev/null +++ b/3rdParty/Boost/src/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp @@ -0,0 +1,1741 @@ +// +//! Copyright (c) 2011-2012 +//! Brandon Kohn +// +//  Distributed under the Boost Software License, Version 1.0. (See +//  accompanying file LICENSE_1_0.txt or copy at +//  http://www.boost.org/LICENSE_1_0.txt) +// +	 +	 +	 +namespace boost { namespace numeric { +     +    template <> +    struct numeric_cast_traits +        < +            char +          , char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            char +          , signed char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<signed char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            char +          , unsigned char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            char +          , short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            char +          , unsigned short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            char +          , int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            char +          , unsigned int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            char +          , long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            char +          , unsigned long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            char +          , float +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<float> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            char +          , double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            char +          , long double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , signed char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<signed char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , unsigned char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , unsigned short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , unsigned int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , unsigned long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , float +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<float> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , long double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , signed char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<signed char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , unsigned char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , unsigned short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , unsigned int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , unsigned long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , float +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<float> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , long double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , signed char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<signed char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , unsigned char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , unsigned short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , unsigned int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , unsigned long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , float +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<float> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , long double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , signed char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<signed char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , unsigned char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , unsigned short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , unsigned int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , unsigned long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , float +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<float> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , long double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , signed char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<signed char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , unsigned char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , unsigned short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , unsigned int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , unsigned long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , float +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<float> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , long double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , signed char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<signed char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , unsigned char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , unsigned short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , unsigned int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , unsigned long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , float +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<float> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , long double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , signed char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<signed char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , unsigned char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , unsigned short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , unsigned int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , unsigned long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , float +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<float> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , long double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , signed char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<signed char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , unsigned char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , unsigned short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , unsigned int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , unsigned long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , float +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<float> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , long double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , signed char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<signed char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , unsigned char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , unsigned short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , unsigned int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , unsigned long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , float +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<float> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , long double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , signed char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<signed char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , unsigned char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , unsigned short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , unsigned int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , unsigned long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , float +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<float> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , long double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , signed char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<signed char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , unsigned char +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned char> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , unsigned short +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned short> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , unsigned int +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned int> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , unsigned long +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<unsigned long> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , float +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<float> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<double> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , long double +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<long double> rounding_policy; +    };  +}} diff --git a/3rdParty/Boost/src/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp b/3rdParty/Boost/src/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp new file mode 100644 index 0000000..b358b9c --- /dev/null +++ b/3rdParty/Boost/src/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp @@ -0,0 +1,347 @@ +// +//! Copyright (c) 2011-2012 +//! Brandon Kohn +// +//  Distributed under the Boost Software License, Version 1.0. (See +//  accompanying file LICENSE_1_0.txt or copy at +//  http://www.boost.org/LICENSE_1_0.txt) +// +namespace boost { namespace numeric { +     +     +    template <> +    struct numeric_cast_traits +        < +            char +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            char +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            signed char +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned char +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            short +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned short +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            int +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned int +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            unsigned long +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            float +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            double +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            long double +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            boost::long_long_type +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            boost::long_long_type +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            boost::ulong_long_type +          , boost::long_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::long_long_type> rounding_policy; +    };  +     +    template <> +    struct numeric_cast_traits +        < +            boost::ulong_long_type +          , boost::ulong_long_type +        > +    { +        typedef def_overflow_handler overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<boost::ulong_long_type> rounding_policy; +    };  +}} diff --git a/3rdParty/Boost/src/boost/numeric/conversion/numeric_cast_traits.hpp b/3rdParty/Boost/src/boost/numeric/conversion/numeric_cast_traits.hpp new file mode 100644 index 0000000..e24296b --- /dev/null +++ b/3rdParty/Boost/src/boost/numeric/conversion/numeric_cast_traits.hpp @@ -0,0 +1,31 @@ +// +//! Copyright (c) 2011 +//! Brandon Kohn +// +//  Distributed under the Boost Software License, Version 1.0. (See +//  accompanying file LICENSE_1_0.txt or copy at +//  http://www.boost.org/LICENSE_1_0.txt) +// +#ifndef BOOST_NUMERIC_CAST_TRAITS_HPP +#define BOOST_NUMERIC_CAST_TRAITS_HPP + +#include <boost/numeric/conversion/converter_policies.hpp> + +namespace boost { namespace numeric { + +    template <typename Target, typename Source, typename EnableIf = void> +    struct numeric_cast_traits +    { +        typedef def_overflow_handler    overflow_policy; +        typedef UseInternalRangeChecker range_checking_policy; +        typedef Trunc<Source>           rounding_policy; +    }; + +}}//namespace boost::numeric; + +#if !defined( BOOST_NUMERIC_CONVERSION_RELAX_BUILT_IN_CAST_TRAITS ) +#include <boost/cstdint.hpp> +#include <boost/numeric/conversion/detail/numeric_cast_traits.hpp> +#endif//!defined BOOST_NUMERIC_CONVERSION_RELAX_BUILT_IN_CAST_TRAITS + +#endif//BOOST_NUMERIC_CAST_TRAITS_HPP | 
 Swift
 Swift