1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
14 // iterator find(const key_type& k);
15 // const_iterator find(const key_type& k) const;
20 #include "test_macros.h"
21 #include "min_allocator.h"
22 #include "private_constructor.hpp"
28 typedef std::set<int> M;
30 typedef M::iterator R;
42 M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
44 assert(r == m.begin());
46 assert(r == next(m.begin()));
48 assert(r == next(m.begin(), 2));
50 assert(r == next(m.begin(), 3));
52 assert(r == next(m.begin(), 4));
54 assert(r == next(m.begin(), 5));
56 assert(r == next(m.begin(), 6));
58 assert(r == next(m.begin(), 7));
60 assert(r == next(m.begin(), 8));
63 typedef M::const_iterator R;
75 const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
77 assert(r == m.begin());
79 assert(r == next(m.begin()));
81 assert(r == next(m.begin(), 2));
83 assert(r == next(m.begin(), 3));
85 assert(r == next(m.begin(), 4));
87 assert(r == next(m.begin(), 5));
89 assert(r == next(m.begin(), 6));
91 assert(r == next(m.begin(), 7));
93 assert(r == next(m.begin(), 8));
96 #if TEST_STD_VER >= 11
99 typedef std::set<int, std::less<int>, min_allocator<int>> M;
101 typedef M::iterator R;
113 M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
115 assert(r == m.begin());
117 assert(r == next(m.begin()));
119 assert(r == next(m.begin(), 2));
121 assert(r == next(m.begin(), 3));
123 assert(r == next(m.begin(), 4));
125 assert(r == next(m.begin(), 5));
127 assert(r == next(m.begin(), 6));
129 assert(r == next(m.begin(), 7));
131 assert(r == next(m.begin(), 8));
134 typedef M::const_iterator R;
146 const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
148 assert(r == m.begin());
150 assert(r == next(m.begin()));
152 assert(r == next(m.begin(), 2));
154 assert(r == next(m.begin(), 3));
156 assert(r == next(m.begin(), 4));
158 assert(r == next(m.begin(), 5));
160 assert(r == next(m.begin(), 6));
162 assert(r == next(m.begin(), 7));
164 assert(r == next(m.begin(), 8));
168 #if TEST_STD_VER > 11
171 typedef std::set<V, std::less<>> M;
172 typedef M::iterator R;
185 M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
187 assert(r == m.begin());
189 assert(r == next(m.begin()));
191 assert(r == next(m.begin(), 2));
193 assert(r == next(m.begin(), 3));
195 assert(r == next(m.begin(), 4));
197 assert(r == next(m.begin(), 5));
199 assert(r == next(m.begin(), 6));
201 assert(r == next(m.begin(), 7));
203 assert(r == next(m.begin(), 8));
207 typedef PrivateConstructor V;
208 typedef std::set<V, std::less<>> M;
209 typedef M::iterator R;
212 m.insert ( V::make ( 5 ));
213 m.insert ( V::make ( 6 ));
214 m.insert ( V::make ( 7 ));
215 m.insert ( V::make ( 8 ));
216 m.insert ( V::make ( 9 ));
217 m.insert ( V::make ( 10 ));
218 m.insert ( V::make ( 11 ));
219 m.insert ( V::make ( 12 ));
222 assert(r == m.begin());
224 assert(r == next(m.begin()));
226 assert(r == next(m.begin(), 2));
228 assert(r == next(m.begin(), 3));
230 assert(r == next(m.begin(), 4));
232 assert(r == next(m.begin(), 5));
234 assert(r == next(m.begin(), 6));
236 assert(r == next(m.begin(), 7));
238 assert(r == next(m.begin(), 8));