]> git.lyx.org Git - lyx.git/blob - boost/boost/type_traits/is_base_and_derived.hpp
complie fix
[lyx.git] / boost / boost / type_traits / is_base_and_derived.hpp
1
2 // (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
3 // Permission to copy, use, modify, sell and distribute this software is 
4 // granted provided this copyright notice appears in all copies. This software 
5 // is provided "as is" without express or implied warranty, and with no claim 
6 // as to its suitability for any purpose.
7 //
8 // See http://www.boost.org for most recent version including documentation.
9
10 #ifndef BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
11 #define BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
12
13 #include "boost/type_traits/is_class.hpp"
14 #include "boost/type_traits/is_convertible.hpp"
15 #include "boost/type_traits/detail/ice_and.hpp"
16 #include "boost/config.hpp"
17
18 // should be the last #include
19 #include "boost/type_traits/detail/bool_trait_def.hpp"
20
21 namespace boost {
22
23 namespace detail {
24
25 template <typename Base, typename Derived>
26 struct is_base_and_derived_impl
27 {
28    BOOST_STATIC_CONSTANT(bool, value =
29       (::boost::type_traits::ice_and<
30          ::boost::is_convertible<Derived*,Base*>::value,
31          ::boost::is_class<Derived>::value,
32          ::boost::is_class<Base>::value
33       >::value)
34    );
35 };
36
37 } // namespace detail
38
39 BOOST_TT_AUX_BOOL_TRAIT_DEF2(
40       is_base_and_derived
41     , Base
42     , Derived
43     , (::boost::detail::is_base_and_derived_impl<Base,Derived>::value)
44     )
45
46 #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
47 BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base&,Derived,false)
48 BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base,Derived&,false)
49 BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base&,Derived&,false)
50 #endif
51
52 } // namespace boost
53
54 #include "boost/type_traits/detail/bool_trait_undef.hpp"
55
56 #endif // BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED