Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/libs/type_traits/test/is_union_test.cpp @ 29

Last change on this file since 29 was 29, checked in by landauf, 16 years ago

updated boost from 1_33_1 to 1_34_1

File size: 3.3 KB
Line 
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_union.hpp>
13#endif
14#include <iostream>
15
16TT_TEST_BEGIN(is_union)
17
18   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<int>::value, false);
19   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<const int>::value, false);
20   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<volatile int>::value, false);
21   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<int*>::value, false);
22   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<int* const>::value, false);
23   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<int[2]>::value, false);
24   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<int&>::value, false);
25   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<mf4>::value, false);
26   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<f1>::value, false);
27   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<enum_UDT>::value, false);
28
29#ifdef BOOST_HAS_TYPE_TRAITS_INTRINSICS
30   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<union_UDT>::value, true);
31   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<POD_union_UDT>::value, true);
32   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<empty_union_UDT>::value, true);
33   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<empty_POD_union_UDT>::value, true);
34   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<union_UDT const>::value, true);
35   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<POD_union_UDT volatile>::value, true);
36   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<empty_union_UDT const volatile>::value, true);
37   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<empty_POD_union_UDT const>::value, true);
38#else
39   std::cout <<
40   "\n<note>\n"
41   "This compiler version does not provide support for is_union 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_union<UDT>::value, false);
49   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<UDT const>::value, false);
50   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<UDT volatile>::value, false);
51   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<empty_UDT>::value, false);
52   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<std::iostream>::value, false);
53
54   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<UDT*>::value, false);
55   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<UDT[2]>::value, false);
56   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<UDT&>::value, false);
57   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<void>::value, false);
58
59   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<test_abc1>::value, false);
60   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<foo0_t>::value, false);
61   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<foo1_t>::value, false);
62   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<foo2_t>::value, false);
63   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<foo3_t>::value, false);
64   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<foo4_t>::value, false);
65   BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union<incomplete_type>::value, false);
66
67TT_TEST_END
68
69
70
71
72
73
74
75
76
Note: See TracBrowser for help on using the repository browser.