348 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			348 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | // | ||
|  | //! 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; | ||
|  |     };  | ||
|  | }} |