$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
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>