]>
Commit | Line | Data |
---|---|---|
b32b8144 FG |
1 | ////////////////////////////////////////////////////////////////////////////// |
2 | // | |
3 | // (C) Copyright Ion Gaztanaga 2004-2013. Distributed under the Boost | |
4 | // 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 | // See http://www.boost.org/libs/container for documentation. | |
8 | // | |
9 | ////////////////////////////////////////////////////////////////////////////// | |
10 | #include <boost/container/detail/tree.hpp> | |
11 | #include <boost/container/adaptive_pool.hpp> | |
92f5a8d4 TL |
12 | #include <boost/container/new_allocator.hpp> |
13 | #include <boost/move/traits.hpp> | |
14 | ||
15 | #include <iostream> | |
b32b8144 FG |
16 | |
17 | #include "movable_int.hpp" | |
18 | #include "dummy_test_allocator.hpp" | |
19 | ||
20 | using namespace boost::container; | |
21 | ||
22 | typedef std::pair<const test::movable_and_copyable_int, test::movable_and_copyable_int> pair_t; | |
23 | ||
24 | namespace boost { | |
25 | namespace container { | |
26 | ||
27 | //Explicit instantiation to detect compilation errors | |
28 | ||
11fdf7f2 | 29 | namespace dtl { |
b32b8144 FG |
30 | |
31 | //Instantiate base class as previous instantiations don't instantiate inherited members | |
32 | template class tree | |
33 | < pair_t | |
34 | , select1st<test::movable_and_copyable_int> | |
35 | , std::less<test::movable_and_copyable_int> | |
36 | , test::simple_allocator<pair_t> | |
37 | , tree_assoc_defaults | |
38 | >; | |
39 | ||
40 | template class tree | |
41 | < pair_t | |
42 | , select1st<test::movable_and_copyable_int> | |
43 | , std::less<test::movable_and_copyable_int> | |
44 | , std::allocator<pair_t> | |
45 | , tree_assoc_defaults | |
46 | >; | |
47 | ||
48 | template class tree | |
49 | < pair_t | |
50 | , select1st<test::movable_and_copyable_int> | |
51 | , std::less<test::movable_and_copyable_int> | |
52 | , adaptive_pool<pair_t> | |
53 | , tree_assoc_defaults | |
54 | >; | |
55 | ||
56 | template class tree | |
57 | < test::movable_and_copyable_int | |
58 | , identity<test::movable_and_copyable_int> | |
59 | , std::less<test::movable_and_copyable_int> | |
60 | , test::simple_allocator<test::movable_and_copyable_int> | |
61 | , tree_assoc_defaults | |
62 | >; | |
63 | ||
64 | template class tree | |
65 | < test::movable_and_copyable_int | |
66 | , identity<test::movable_and_copyable_int> | |
67 | , std::less<test::movable_and_copyable_int> | |
68 | , std::allocator<test::movable_and_copyable_int> | |
69 | , tree_assoc_defaults | |
70 | >; | |
71 | ||
72 | template class tree | |
73 | < test::movable_and_copyable_int | |
74 | , identity<test::movable_and_copyable_int> | |
75 | , std::less<test::movable_and_copyable_int> | |
76 | , adaptive_pool<test::movable_and_copyable_int> | |
77 | , tree_assoc_defaults | |
78 | >; | |
79 | ||
11fdf7f2 | 80 | } //dtl { |
b32b8144 FG |
81 | |
82 | }} //boost::container | |
83 | ||
84 | int main () | |
85 | { | |
92f5a8d4 TL |
86 | //////////////////////////////////// |
87 | // has_trivial_destructor_after_move testing | |
88 | //////////////////////////////////// | |
89 | // default | |
90 | { | |
91 | typedef boost::container::dtl::tree<int, void, std::less<int>, void, void> tree; | |
92 | typedef tree::allocator_type allocator_type; | |
93 | typedef boost::container::allocator_traits<allocator_type>::pointer pointer; | |
94 | typedef tree::key_compare key_compare; | |
95 | if (boost::has_trivial_destructor_after_move<tree>::value != | |
96 | boost::has_trivial_destructor_after_move<allocator_type>::value && | |
97 | boost::has_trivial_destructor_after_move<pointer>::value && | |
98 | boost::has_trivial_destructor_after_move<key_compare>::value) { | |
99 | std::cerr << "has_trivial_destructor_after_move(default allocator) test failed" << std::endl; | |
100 | return 1; | |
101 | } | |
102 | } | |
103 | // std::allocator | |
104 | { | |
105 | typedef boost::container::dtl::tree<int, void, std::less<int>, std::allocator<int>, void> tree; | |
106 | typedef tree::allocator_type allocator_type; | |
107 | typedef boost::container::allocator_traits<allocator_type>::pointer pointer; | |
108 | typedef tree::key_compare key_compare; | |
109 | if (boost::has_trivial_destructor_after_move<tree>::value != | |
110 | boost::has_trivial_destructor_after_move<allocator_type>::value && | |
111 | boost::has_trivial_destructor_after_move<pointer>::value && | |
112 | boost::has_trivial_destructor_after_move<key_compare>::value) { | |
113 | std::cerr << "has_trivial_destructor_after_move(std::allocator) test failed" << std::endl; | |
114 | return 1; | |
115 | } | |
116 | } | |
117 | ||
b32b8144 FG |
118 | return 0; |
119 | } |