]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/type_traits/test/is_class_test.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / type_traits / test / is_class_test.cpp
1
2 // (C) Copyright John Maddock 2000.
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)
6
7 #include "test.hpp"
8 #include "check_integral_constant.hpp"
9 #ifdef TEST_STD
10 # include <type_traits>
11 #else
12 # include <boost/type_traits/is_class.hpp>
13 #endif
14 #include <iostream>
15
16 TT_TEST_BEGIN(is_class)
17
18 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<int>::value, false);
19 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<const int>::value, false);
20 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<volatile int>::value, false);
21 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<int*>::value, false);
22 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<int* const>::value, false);
23 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<int[2]>::value, false);
24 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<int const[2]>::value, false);
25 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<int&>::value, false);
26 #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
27 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<int&&>::value, false);
28 #endif
29 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<mf4>::value, false);
30 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<f1>::value, false);
31 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<enum_UDT>::value, false);
32
33 #if defined(BOOST_HAS_TYPE_TRAITS_INTRINSICS) && !defined(__sgi)
34 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<union_UDT>::value, false);
35 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<POD_union_UDT>::value, false);
36 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<empty_union_UDT>::value, false);
37 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<empty_POD_union_UDT>::value, false);
38 #else
39 std::cout <<
40 "\n<note>\n"
41 "This compiler version does not provide support for is_class on\n"
42 "union types. Such support is not currently required by the\n"
43 "C++ Standard. It will be required to support the upcoming\n"
44 "Standard Library Technical Report.\n"
45 "</note>\n";
46 #endif
47
48 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<UDT>::value, true);
49 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<UDT const>::value, true);
50 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<UDT volatile>::value, true);
51 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<empty_UDT>::value, true);
52 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<std::iostream>::value, true);
53 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<test_abc1>::value, true);
54 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<test_abc1 const>::value, true);
55
56 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<UDT*>::value, false);
57 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<UDT[2]>::value, false);
58 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<UDT&>::value, false);
59 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class<void>::value, false);
60
61 TT_TEST_END
62
63
64
65
66
67
68
69