diff options
Diffstat (limited to 'boost/numeric')
-rw-r--r-- | boost/numeric/conversion/cast.hpp | 2 | ||||
-rw-r--r-- | boost/numeric/conversion/conversion_traits.hpp | 7 | ||||
-rw-r--r-- | boost/numeric/conversion/detail/converter.hpp | 2 | ||||
-rw-r--r--[-rwxr-xr-x] | boost/numeric/conversion/detail/old_numeric_cast.hpp | 37 |
4 files changed, 5 insertions, 43 deletions
diff --git a/boost/numeric/conversion/cast.hpp b/boost/numeric/conversion/cast.hpp index 1ee02518bc..61286c1311 100644 --- a/boost/numeric/conversion/cast.hpp +++ b/boost/numeric/conversion/cast.hpp @@ -23,7 +23,7 @@ #include <boost/detail/workaround.hpp> -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) # include<boost/numeric/conversion/detail/old_numeric_cast.hpp> diff --git a/boost/numeric/conversion/conversion_traits.hpp b/boost/numeric/conversion/conversion_traits.hpp index 6da6178ad6..23e0eb8c9a 100644 --- a/boost/numeric/conversion/conversion_traits.hpp +++ b/boost/numeric/conversion/conversion_traits.hpp @@ -21,13 +21,6 @@ template<class T, class S> struct conversion_traits : convdetail::get_conversion_traits<T,S>::type { -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - typedef typename convdetail::get_conversion_traits<T,S>::type base_; - typedef typename base_::target_type target_type; - typedef typename base_::source_type source_type; - typedef typename base_::result_type result_type; - typedef typename base_::argument_type argument_type; -#endif } ; } } // namespace boost::numeric diff --git a/boost/numeric/conversion/detail/converter.hpp b/boost/numeric/conversion/detail/converter.hpp index 2884e84e8d..f7bf7b4436 100644 --- a/boost/numeric/conversion/detail/converter.hpp +++ b/boost/numeric/conversion/detail/converter.hpp @@ -453,7 +453,7 @@ namespace boost { namespace numeric { namespace convdetail struct trivial_converter_impl : public dummy_range_checker<Traits> { typedef Traits traits ; - + typedef typename Traits::source_type source_type ; typedef typename Traits::argument_type argument_type ; typedef typename Traits::result_type result_type ; diff --git a/boost/numeric/conversion/detail/old_numeric_cast.hpp b/boost/numeric/conversion/detail/old_numeric_cast.hpp index 47b86d2c8c..9901ed2ae3 100755..100644 --- a/boost/numeric/conversion/detail/old_numeric_cast.hpp +++ b/boost/numeric/conversion/detail/old_numeric_cast.hpp @@ -8,6 +8,8 @@ // See http://www.boost.org/libs/conversion for Documentation. // Revision History +// 02 Jun 14 Remove VC6 workarounds. +// 16 Jul 11 Bugfixes for VC6. // 23 JUN 05 Code extracted from /boost/cast.hpp into this new header. // Keeps this legacy version of numeric_cast<> for old compilers // wich can't compile the new version in /boost/numeric/conversion/cast.hpp @@ -53,19 +55,6 @@ # include <boost/limits.hpp> # include <boost/numeric/conversion/converter_policies.hpp> -// It has been demonstrated numerous times that MSVC 6.0 fails silently at link -// time if you use a template function which has template parameters that don't -// appear in the function's argument list. -// -// TODO: Add this to config.hpp? -// FLC: This macro is repeated in boost/cast.hpp but only locally (is undefined at the bottom) -// so is OK to reproduce it here. -# if defined(BOOST_MSVC) && BOOST_MSVC < 1300 -# define BOOST_EXPLICIT_DEFAULT_TARGET , ::boost::type<Target>* = 0 -# else -# define BOOST_EXPLICIT_DEFAULT_TARGET -# endif - namespace boost { using numeric::bad_numeric_cast; @@ -214,24 +203,6 @@ namespace boost template <class X, class Y> static inline bool check(X x, Y) { return x >= 0 && static_cast<X>(static_cast<Y>(x)) != x; } - -# if defined(BOOST_MSVC) && BOOST_MSVC < 1300 - // MSVC6 can't static_cast unsigned __int64 -> floating types -# define BOOST_UINT64_CAST(src_type) \ - static inline bool check(src_type x, unsigned __int64) \ - { \ - if (x < 0) return false; \ - unsigned __int64 y = static_cast<unsigned __int64>(x); \ - bool odd = y & 0x1; \ - __int64 div2 = static_cast<__int64>(y >> 1); \ - return ((static_cast<src_type>(div2) * 2.0) + odd) != x; \ - } - - BOOST_UINT64_CAST(long double); - BOOST_UINT64_CAST(double); - BOOST_UINT64_CAST(float); -# undef BOOST_UINT64_CAST -# endif }; template<> @@ -285,7 +256,7 @@ namespace boost #endif template<typename Target, typename Source> - inline Target numeric_cast(Source arg BOOST_EXPLICIT_DEFAULT_TARGET) + inline Target numeric_cast(Source arg) { // typedefs abbreviating respective trait classes typedef detail::fixed_numeric_limits<Source> arg_traits; @@ -332,8 +303,6 @@ namespace boost return static_cast<Target>(arg); } // numeric_cast -# undef BOOST_EXPLICIT_DEFAULT_TARGET - } // namespace boost #endif // BOOST_OLD_NUMERIC_CAST_HPP |