Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r82126 - in trunk: boost/intrusive/detail libs/intrusive/doc libs/intrusive/test
From: igaztanaga_at_[hidden]
Date: 2012-12-20 16:13:00


Author: igaztanaga
Date: 2012-12-20 16:12:59 EST (Thu, 20 Dec 2012)
New Revision: 82126
URL: http://svn.boost.org/trac/boost/changeset/82126

Log:
Fix for bug #7815
Text files modified:
   trunk/boost/intrusive/detail/has_member_function_callable_with.hpp | 3 ++-
   trunk/boost/intrusive/detail/mpl.hpp | 16 ++++++++++++++++
   trunk/libs/intrusive/doc/intrusive.qbk | 5 ++++-
   trunk/libs/intrusive/test/has_member_function_callable_with.cpp | 2 +-
   4 files changed, 23 insertions(+), 3 deletions(-)

Modified: trunk/boost/intrusive/detail/has_member_function_callable_with.hpp
==============================================================================
--- trunk/boost/intrusive/detail/has_member_function_callable_with.hpp (original)
+++ trunk/boost/intrusive/detail/has_member_function_callable_with.hpp 2012-12-20 16:12:59 EST (Thu, 20 Dec 2012)
@@ -18,6 +18,7 @@
       #include <boost/intrusive/detail/config_begin.hpp>
       #include <boost/intrusive/detail/workaround.hpp>
       #include <boost/intrusive/detail/preprocessor.hpp>
+ #include <boost/intrusive/detail/mpl.hpp>
       #include <boost/static_assert.hpp>
       #include <boost/move/move.hpp>
 
@@ -85,7 +86,7 @@
             void BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME();
          };
 
- struct Base : public Type, public BaseMixin { Base(); };
+ struct Base : public ::boost::intrusive::detail::remove_cv<Type>::type, public BaseMixin { Base(); };
          template <typename T, T t> class Helper{};
 
          template <typename U>

Modified: trunk/boost/intrusive/detail/mpl.hpp
==============================================================================
--- trunk/boost/intrusive/detail/mpl.hpp (original)
+++ trunk/boost/intrusive/detail/mpl.hpp 2012-12-20 16:12:59 EST (Thu, 20 Dec 2012)
@@ -311,6 +311,22 @@
 struct remove_const<const T>
 { typedef T type; };
 
+template<typename T>
+struct remove_cv
+{ typedef T type; };
+
+template<typename T>
+struct remove_cv<const T>
+{ typedef T type; };
+
+template<typename T>
+struct remove_cv<const volatile T>
+{ typedef T type; };
+
+template<typename T>
+struct remove_cv<volatile T>
+{ typedef T type; };
+
 template<class T>
 struct remove_reference
 {

Modified: trunk/libs/intrusive/doc/intrusive.qbk
==============================================================================
--- trunk/libs/intrusive/doc/intrusive.qbk (original)
+++ trunk/libs/intrusive/doc/intrusive.qbk 2012-12-20 16:12:59 EST (Thu, 20 Dec 2012)
@@ -3847,7 +3847,10 @@
 
 [section:release_notes_boost_1_53_00 Boost 1.53 Release]
 
-* Fixed bug [@https://svn.boost.org/trac/boost/ticket/7529 #7529].
+* Fixed bugs
+ [@https://svn.boost.org/trac/boost/ticket/7174 #7174],
+ [@https://svn.boost.org/trac/boost/ticket/7529 #7529],
+ [@https://svn.boost.org/trac/boost/ticket/7815 #7815].
 * Fixed GCC -Wshadow warnings.
 * Added missing `explicit` keyword in several intrusive container constructors.
 * Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros.

Modified: trunk/libs/intrusive/test/has_member_function_callable_with.cpp
==============================================================================
--- trunk/libs/intrusive/test/has_member_function_callable_with.cpp (original)
+++ trunk/libs/intrusive/test/has_member_function_callable_with.cpp 2012-12-20 16:12:59 EST (Thu, 20 Dec 2012)
@@ -53,7 +53,7 @@
       void func();
    };
 
- struct Base : public Type, public BaseMixin {};
+ struct Base : public ::boost::intrusive::detail::remove_cv<Type>::type, public BaseMixin {};
    template <typename T, T t> class Helper{};
 
    template <typename 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