Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r80153 - in sandbox/big_number/boost/multiprecision: . detail
From: john_at_[hidden]
Date: 2012-08-23 07:24:34


Author: johnmaddock
Date: 2012-08-23 07:24:33 EDT (Thu, 23 Aug 2012)
New Revision: 80153
URL: http://svn.boost.org/trac/boost/changeset/80153

Log:
Inching closer to getting GCC to compile the tests again...
Text files modified:
   sandbox/big_number/boost/multiprecision/detail/number_base.hpp | 2 +-
   sandbox/big_number/boost/multiprecision/mpfr.hpp | 1 -
   sandbox/big_number/boost/multiprecision/number.hpp | 6 +++++-
   sandbox/big_number/boost/multiprecision/rational_adapter.hpp | 4 ++--
   4 files changed, 8 insertions(+), 5 deletions(-)

Modified: sandbox/big_number/boost/multiprecision/detail/number_base.hpp
==============================================================================
--- sandbox/big_number/boost/multiprecision/detail/number_base.hpp (original)
+++ sandbox/big_number/boost/multiprecision/detail/number_base.hpp 2012-08-23 07:24:33 EDT (Thu, 23 Aug 2012)
@@ -76,7 +76,7 @@
 template <class Val, class Backend, class Tag>
 struct canonical_imp
 {
- typedef typename decay<Val>::type type;
+ typedef typename remove_cv<typename decay<const Val>::type>::type type;
 };
 template <class Val, class Backend>
 struct canonical_imp<Val, Backend, mpl::int_<0> >

Modified: sandbox/big_number/boost/multiprecision/mpfr.hpp
==============================================================================
--- sandbox/big_number/boost/multiprecision/mpfr.hpp (original)
+++ sandbox/big_number/boost/multiprecision/mpfr.hpp 2012-08-23 07:24:33 EDT (Thu, 23 Aug 2012)
@@ -1083,7 +1083,6 @@
 template<>
 struct number_category<typename detail::canonical<mpfr_t, backends::mpfr_float_backend<0> >::type> : public mpl::int_<number_kind_floating_point>{};
 
-
 using boost::multiprecision::backends::mpfr_float_backend;
 
 typedef number<mpfr_float_backend<50> > mpfr_float_50;

Modified: sandbox/big_number/boost/multiprecision/number.hpp
==============================================================================
--- sandbox/big_number/boost/multiprecision/number.hpp (original)
+++ sandbox/big_number/boost/multiprecision/number.hpp 2012-08-23 07:24:33 EDT (Thu, 23 Aug 2012)
@@ -1601,7 +1601,11 @@
    template <class B2, bool ET>
    static BOOST_FORCEINLINE BOOST_CONSTEXPR const B2& canonical_value(const number<B2, ET>& v) BOOST_NOEXCEPT { return v.backend(); }
    template <class V>
- static BOOST_FORCEINLINE BOOST_CONSTEXPR typename detail::canonical<V, Backend>::type canonical_value(const V& v) BOOST_NOEXCEPT { return static_cast<typename detail::canonical<V, Backend>::type>(v); }
+ static BOOST_FORCEINLINE BOOST_CONSTEXPR typename disable_if<is_same<typename detail::canonical<V, Backend>::type, V>, typename detail::canonical<V, Backend>::type>::type
+ canonical_value(const V& v) BOOST_NOEXCEPT { return static_cast<typename detail::canonical<V, Backend>::type>(v); }
+ template <class V>
+ static BOOST_FORCEINLINE BOOST_CONSTEXPR typename enable_if<is_same<typename detail::canonical<V, Backend>::type, V>, const V&>::type
+ canonical_value(const V& v) BOOST_NOEXCEPT { return v; }
    static BOOST_FORCEINLINE typename detail::canonical<std::string, Backend>::type canonical_value(const std::string& v) BOOST_NOEXCEPT { return v.c_str(); }
 
    static BOOST_FORCEINLINE BOOST_CONSTEXPR const Backend& function_arg_value(const self_type& v) BOOST_NOEXCEPT { return v.backend(); }

Modified: sandbox/big_number/boost/multiprecision/rational_adapter.hpp
==============================================================================
--- sandbox/big_number/boost/multiprecision/rational_adapter.hpp (original)
+++ sandbox/big_number/boost/multiprecision/rational_adapter.hpp 2012-08-23 07:24:33 EDT (Thu, 23 Aug 2012)
@@ -41,11 +41,11 @@
    template <class U>
    explicit rational_adapter(const U& u,
       typename enable_if_c<
- detail::is_explicitly_convertible<U, IntBackend>::value && !is_convertible<U, IntBackend>::value
+ boost::multiprecision::detail::is_explicitly_convertible<U, IntBackend>::value && !is_convertible<U, IntBackend>::value
>::type* = 0)
       : m_value(IntBackend(u)){}
    template <class U>
- typename enable_if_c<(detail::is_explicitly_convertible<U, IntBackend>::value && !is_arithmetic<U>::value), rational_adapter&>::type operator = (const U& u)
+ typename enable_if_c<(boost::multiprecision::detail::is_explicitly_convertible<U, IntBackend>::value && !is_arithmetic<U>::value), rational_adapter&>::type operator = (const U& u)
    {
       m_value = IntBackend(u);
    }


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk