]> git.lyx.org Git - lyx.git/blobdiff - boost/boost/type_traits/is_base_of.hpp
remove unused boost files (~520)
[lyx.git] / boost / boost / type_traits / is_base_of.hpp
index bf46da38e38cc4fb4d61338980e6d08ae6475194..0cc7a32fc97819350f5811e747ad58f82263cec0 100644 (file)
 
 #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)