summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/src/boost/type_traits/is_base_and_derived.hpp')
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_base_and_derived.hpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/3rdParty/Boost/src/boost/type_traits/is_base_and_derived.hpp b/3rdParty/Boost/src/boost/type_traits/is_base_and_derived.hpp
index 8367b76..d6a9991 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_base_and_derived.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_base_and_derived.hpp
@@ -15,10 +15,10 @@
#include <boost/type_traits/is_same.hpp>
#include <boost/type_traits/is_convertible.hpp>
#include <boost/type_traits/detail/ice_and.hpp>
-#include <boost/type_traits/remove_cv.hpp>
#include <boost/config.hpp>
#include <boost/static_assert.hpp>
#endif
+#include <boost/type_traits/remove_cv.hpp>
// should be the last #include
#include <boost/type_traits/detail/bool_trait_def.hpp>
@@ -133,7 +133,7 @@ struct bd_helper
template<typename B, typename D>
struct is_base_and_derived_impl2
{
-#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000)
+#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(push)
#pragma warning(disable:6334)
#endif
@@ -156,7 +156,7 @@ struct is_base_and_derived_impl2
BOOST_STATIC_CONSTANT(bool, value =
sizeof(bd_helper<B,D>::check_sig(Host(), 0)) == sizeof(type_traits::yes_type));
-#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000)
+#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(pop)
#endif
};
@@ -212,7 +212,7 @@ struct is_base_and_derived_impl
typedef is_base_and_derived_select<
::boost::is_class<B>::value,
::boost::is_class<D>::value,
- ::boost::is_same<B,D>::value> selector;
+ ::boost::is_same<ncvB,ncvD>::value> selector;
typedef typename selector::template rebind<ncvB,ncvD> binder;
typedef typename binder::type bound_type;
@@ -222,7 +222,10 @@ struct is_base_and_derived_impl
template <typename B, typename D>
struct is_base_and_derived_impl
{
- BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_BASE_OF(B,D));
+ typedef typename remove_cv<B>::type ncvB;
+ typedef typename remove_cv<D>::type ncvD;
+
+ BOOST_STATIC_CONSTANT(bool, value = (BOOST_IS_BASE_OF(B,D) && ! ::boost::is_same<ncvB,ncvD>::value));
};
#endif
} // namespace detail