]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/type_traits/test/is_base_of_test.cpp
2 // (C) Copyright John Maddock 2005.
3 // Use, modification and distribution are subject to the
4 // Boost Software License, Version 1.0. (See accompanying file
5 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 # include <type_traits>
11 # include <boost/type_traits/is_base_of.hpp>
14 #include "check_integral_constant.hpp"
18 TT_TEST_BEGIN(is_base_of
)
20 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Derived
,Base
>::value
), false);
21 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Derived
,Derived
>::value
), true);
22 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Derived
,const Derived
>::value
), true);
23 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Base
,Base
>::value
), true);
24 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Base
,Derived
>::value
), true);
25 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<const Base
,Derived
>::value
), true);
26 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Base
,const Derived
>::value
), true);
27 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Base
,MultiBase
>::value
), true);
28 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Derived
,MultiBase
>::value
), true);
29 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Derived2
,MultiBase
>::value
), true);
30 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Base
,PrivateBase
>::value
), true);
31 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<NonDerived
,Base
>::value
), false);
32 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Base
,void>::value
), false);
33 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Base
,const void>::value
), false);
34 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<void,Derived
>::value
), false);
35 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<const void,Derived
>::value
), false);
36 #if defined(TEST_STD) && (TEST_STD < 2006)
37 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<int, int>::value
), true);
38 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<const int, int>::value
), true);
40 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<int, int>::value
), false);
41 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<const int, int>::value
), false);
43 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<VB
,VD
>::value
), true);
44 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<VD
,VB
>::value
), false);
45 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<test_abc1
,test_abc3
>::value
), true);
46 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<test_abc3
,test_abc1
>::value
), false);
47 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<Base
,virtual_inherit1
>::value
), true);
48 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of
<virtual_inherit1
,Base
>::value
), false);