diff options
Diffstat (limited to '3rdParty/Boost/src/boost/type_traits/is_base_of.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/type_traits/is_base_of.hpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/3rdParty/Boost/src/boost/type_traits/is_base_of.hpp b/3rdParty/Boost/src/boost/type_traits/is_base_of.hpp index bf46da3..0cc7a32 100644 --- a/3rdParty/Boost/src/boost/type_traits/is_base_of.hpp +++ b/3rdParty/Boost/src/boost/type_traits/is_base_of.hpp @@ -11,21 +11,32 @@ #include <boost/type_traits/is_base_and_derived.hpp> #include <boost/type_traits/is_same.hpp> +#include <boost/type_traits/is_class.hpp> #include <boost/type_traits/detail/ice_or.hpp> +#include <boost/type_traits/detail/ice_and.hpp> // should be the last #include #include <boost/type_traits/detail/bool_trait_def.hpp> namespace boost { + namespace detail{ + template <class B, class D> + struct is_base_of_imp + { + typedef typename remove_cv<B>::type ncvB; + typedef typename remove_cv<D>::type ncvD; + BOOST_STATIC_CONSTANT(bool, value = (::boost::type_traits::ice_or< + (::boost::detail::is_base_and_derived_impl<ncvB,ncvD>::value), + (::boost::type_traits::ice_and< ::boost::is_same<ncvB,ncvD>::value, ::boost::is_class<ncvB>::value>::value)>::value)); + }; + } + BOOST_TT_AUX_BOOL_TRAIT_DEF2( is_base_of , Base , Derived - , (::boost::type_traits::ice_or< - (::boost::detail::is_base_and_derived_impl<Base,Derived>::value), - (::boost::is_same<Base,Derived>::value)>::value) - ) + , (::boost::detail::is_base_of_imp<Base, Derived>::value)) #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_of,Base&,Derived,false) |