summaryrefslogtreecommitdiff
path: root/boost/numeric/conversion
diff options
context:
space:
mode:
Diffstat (limited to 'boost/numeric/conversion')
-rw-r--r--boost/numeric/conversion/cast.hpp2
-rw-r--r--boost/numeric/conversion/conversion_traits.hpp7
-rw-r--r--boost/numeric/conversion/detail/converter.hpp2
-rw-r--r--[-rwxr-xr-x]boost/numeric/conversion/detail/old_numeric_cast.hpp37
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