15a83710eSEric Fiselier //===----------------------------------------------------------------------===//
25a83710eSEric Fiselier //
357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65a83710eSEric Fiselier //
75a83710eSEric Fiselier //===----------------------------------------------------------------------===//
85a83710eSEric Fiselier 
95a83710eSEric Fiselier // <map>
105a83710eSEric Fiselier 
115a83710eSEric Fiselier // class map
125a83710eSEric Fiselier 
135a83710eSEric Fiselier //       iterator lower_bound(const key_type& k);
145a83710eSEric Fiselier // const_iterator lower_bound(const key_type& k) const;
155a83710eSEric Fiselier 
165a83710eSEric Fiselier #include <map>
175a83710eSEric Fiselier #include <cassert>
185a83710eSEric Fiselier 
190f901c7eSStephan T. Lavavej #include "test_macros.h"
205a83710eSEric Fiselier #include "min_allocator.h"
21cc89063bSNico Weber #include "private_constructor.h"
22f8457a07SMarshall Clow #include "is_transparent.h"
235a83710eSEric Fiselier 
main(int,char **)242df59c50SJF Bastien int main(int, char**)
255a83710eSEric Fiselier {
265a83710eSEric Fiselier     {
275a83710eSEric Fiselier     typedef std::pair<const int, double> V;
285a83710eSEric Fiselier     typedef std::map<int, double> M;
295a83710eSEric Fiselier     {
305a83710eSEric Fiselier         typedef M::iterator R;
315a83710eSEric Fiselier         V ar[] =
325a83710eSEric Fiselier         {
335a83710eSEric Fiselier             V(5, 5),
345a83710eSEric Fiselier             V(7, 6),
355a83710eSEric Fiselier             V(9, 7),
365a83710eSEric Fiselier             V(11, 8),
375a83710eSEric Fiselier             V(13, 9),
385a83710eSEric Fiselier             V(15, 10),
395a83710eSEric Fiselier             V(17, 11),
405a83710eSEric Fiselier             V(19, 12)
415a83710eSEric Fiselier         };
425a83710eSEric Fiselier         M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
435a83710eSEric Fiselier         R r = m.lower_bound(5);
445a83710eSEric Fiselier         assert(r == m.begin());
455a83710eSEric Fiselier         r = m.lower_bound(7);
46*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin()));
475a83710eSEric Fiselier         r = m.lower_bound(9);
48*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 2));
495a83710eSEric Fiselier         r = m.lower_bound(11);
50*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 3));
515a83710eSEric Fiselier         r = m.lower_bound(13);
52*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 4));
535a83710eSEric Fiselier         r = m.lower_bound(15);
54*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 5));
555a83710eSEric Fiselier         r = m.lower_bound(17);
56*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 6));
575a83710eSEric Fiselier         r = m.lower_bound(19);
58*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 7));
595a83710eSEric Fiselier         r = m.lower_bound(4);
60*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 0));
615a83710eSEric Fiselier         r = m.lower_bound(6);
62*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 1));
635a83710eSEric Fiselier         r = m.lower_bound(8);
64*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 2));
655a83710eSEric Fiselier         r = m.lower_bound(10);
66*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 3));
675a83710eSEric Fiselier         r = m.lower_bound(12);
68*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 4));
695a83710eSEric Fiselier         r = m.lower_bound(14);
70*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 5));
715a83710eSEric Fiselier         r = m.lower_bound(16);
72*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 6));
735a83710eSEric Fiselier         r = m.lower_bound(18);
74*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 7));
755a83710eSEric Fiselier         r = m.lower_bound(20);
76*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 8));
775a83710eSEric Fiselier     }
785a83710eSEric Fiselier     {
795a83710eSEric Fiselier         typedef M::const_iterator R;
805a83710eSEric Fiselier         V ar[] =
815a83710eSEric Fiselier         {
825a83710eSEric Fiselier             V(5, 5),
835a83710eSEric Fiselier             V(7, 6),
845a83710eSEric Fiselier             V(9, 7),
855a83710eSEric Fiselier             V(11, 8),
865a83710eSEric Fiselier             V(13, 9),
875a83710eSEric Fiselier             V(15, 10),
885a83710eSEric Fiselier             V(17, 11),
895a83710eSEric Fiselier             V(19, 12)
905a83710eSEric Fiselier         };
915a83710eSEric Fiselier         const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
925a83710eSEric Fiselier         R r = m.lower_bound(5);
935a83710eSEric Fiselier         assert(r == m.begin());
945a83710eSEric Fiselier         r = m.lower_bound(7);
95*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin()));
965a83710eSEric Fiselier         r = m.lower_bound(9);
97*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 2));
985a83710eSEric Fiselier         r = m.lower_bound(11);
99*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 3));
1005a83710eSEric Fiselier         r = m.lower_bound(13);
101*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 4));
1025a83710eSEric Fiselier         r = m.lower_bound(15);
103*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 5));
1045a83710eSEric Fiselier         r = m.lower_bound(17);
105*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 6));
1065a83710eSEric Fiselier         r = m.lower_bound(19);
107*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 7));
1085a83710eSEric Fiselier         r = m.lower_bound(4);
109*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 0));
1105a83710eSEric Fiselier         r = m.lower_bound(6);
111*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 1));
1125a83710eSEric Fiselier         r = m.lower_bound(8);
113*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 2));
1145a83710eSEric Fiselier         r = m.lower_bound(10);
115*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 3));
1165a83710eSEric Fiselier         r = m.lower_bound(12);
117*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 4));
1185a83710eSEric Fiselier         r = m.lower_bound(14);
119*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 5));
1205a83710eSEric Fiselier         r = m.lower_bound(16);
121*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 6));
1225a83710eSEric Fiselier         r = m.lower_bound(18);
123*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 7));
1245a83710eSEric Fiselier         r = m.lower_bound(20);
125*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 8));
1265a83710eSEric Fiselier     }
1275a83710eSEric Fiselier     }
128f2f2a639SEric Fiselier #if TEST_STD_VER >= 11
1295a83710eSEric Fiselier     {
1305a83710eSEric Fiselier     typedef std::pair<const int, double> V;
1315a83710eSEric Fiselier     typedef std::map<int, double, std::less<int>, min_allocator<V>> M;
1325a83710eSEric Fiselier     {
1335a83710eSEric Fiselier         typedef M::iterator R;
1345a83710eSEric Fiselier         V ar[] =
1355a83710eSEric Fiselier         {
1365a83710eSEric Fiselier             V(5, 5),
1375a83710eSEric Fiselier             V(7, 6),
1385a83710eSEric Fiselier             V(9, 7),
1395a83710eSEric Fiselier             V(11, 8),
1405a83710eSEric Fiselier             V(13, 9),
1415a83710eSEric Fiselier             V(15, 10),
1425a83710eSEric Fiselier             V(17, 11),
1435a83710eSEric Fiselier             V(19, 12)
1445a83710eSEric Fiselier         };
1455a83710eSEric Fiselier         M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
1465a83710eSEric Fiselier         R r = m.lower_bound(5);
1475a83710eSEric Fiselier         assert(r == m.begin());
1485a83710eSEric Fiselier         r = m.lower_bound(7);
149*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin()));
1505a83710eSEric Fiselier         r = m.lower_bound(9);
151*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 2));
1525a83710eSEric Fiselier         r = m.lower_bound(11);
153*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 3));
1545a83710eSEric Fiselier         r = m.lower_bound(13);
155*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 4));
1565a83710eSEric Fiselier         r = m.lower_bound(15);
157*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 5));
1585a83710eSEric Fiselier         r = m.lower_bound(17);
159*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 6));
1605a83710eSEric Fiselier         r = m.lower_bound(19);
161*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 7));
1625a83710eSEric Fiselier         r = m.lower_bound(4);
163*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 0));
1645a83710eSEric Fiselier         r = m.lower_bound(6);
165*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 1));
1665a83710eSEric Fiselier         r = m.lower_bound(8);
167*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 2));
1685a83710eSEric Fiselier         r = m.lower_bound(10);
169*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 3));
1705a83710eSEric Fiselier         r = m.lower_bound(12);
171*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 4));
1725a83710eSEric Fiselier         r = m.lower_bound(14);
173*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 5));
1745a83710eSEric Fiselier         r = m.lower_bound(16);
175*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 6));
1765a83710eSEric Fiselier         r = m.lower_bound(18);
177*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 7));
1785a83710eSEric Fiselier         r = m.lower_bound(20);
179*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 8));
1805a83710eSEric Fiselier     }
1815a83710eSEric Fiselier     {
1825a83710eSEric Fiselier         typedef M::const_iterator R;
1835a83710eSEric Fiselier         V ar[] =
1845a83710eSEric Fiselier         {
1855a83710eSEric Fiselier             V(5, 5),
1865a83710eSEric Fiselier             V(7, 6),
1875a83710eSEric Fiselier             V(9, 7),
1885a83710eSEric Fiselier             V(11, 8),
1895a83710eSEric Fiselier             V(13, 9),
1905a83710eSEric Fiselier             V(15, 10),
1915a83710eSEric Fiselier             V(17, 11),
1925a83710eSEric Fiselier             V(19, 12)
1935a83710eSEric Fiselier         };
1945a83710eSEric Fiselier         const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
1955a83710eSEric Fiselier         R r = m.lower_bound(5);
1965a83710eSEric Fiselier         assert(r == m.begin());
1975a83710eSEric Fiselier         r = m.lower_bound(7);
198*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin()));
1995a83710eSEric Fiselier         r = m.lower_bound(9);
200*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 2));
2015a83710eSEric Fiselier         r = m.lower_bound(11);
202*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 3));
2035a83710eSEric Fiselier         r = m.lower_bound(13);
204*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 4));
2055a83710eSEric Fiselier         r = m.lower_bound(15);
206*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 5));
2075a83710eSEric Fiselier         r = m.lower_bound(17);
208*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 6));
2095a83710eSEric Fiselier         r = m.lower_bound(19);
210*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 7));
2115a83710eSEric Fiselier         r = m.lower_bound(4);
212*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 0));
2135a83710eSEric Fiselier         r = m.lower_bound(6);
214*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 1));
2155a83710eSEric Fiselier         r = m.lower_bound(8);
216*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 2));
2175a83710eSEric Fiselier         r = m.lower_bound(10);
218*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 3));
2195a83710eSEric Fiselier         r = m.lower_bound(12);
220*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 4));
2215a83710eSEric Fiselier         r = m.lower_bound(14);
222*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 5));
2235a83710eSEric Fiselier         r = m.lower_bound(16);
224*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 6));
2255a83710eSEric Fiselier         r = m.lower_bound(18);
226*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 7));
2275a83710eSEric Fiselier         r = m.lower_bound(20);
228*5ffe11a9SArthur O'Dwyer         assert(r == std::next(m.begin(), 8));
2295a83710eSEric Fiselier     }
2305a83710eSEric Fiselier     }
2315a83710eSEric Fiselier #endif
2320f901c7eSStephan T. Lavavej #if TEST_STD_VER > 11
2335a83710eSEric Fiselier     {
2345a83710eSEric Fiselier     typedef std::pair<const int, double> V;
2355a83710eSEric Fiselier     typedef std::map<int, double, std::less <>> M;
2365a83710eSEric Fiselier     typedef M::iterator R;
2375a83710eSEric Fiselier 
2385a83710eSEric Fiselier     V ar[] =
2395a83710eSEric Fiselier     {
2405a83710eSEric Fiselier         V(5, 5),
2415a83710eSEric Fiselier         V(7, 6),
2425a83710eSEric Fiselier         V(9, 7),
2435a83710eSEric Fiselier         V(11, 8),
2445a83710eSEric Fiselier         V(13, 9),
2455a83710eSEric Fiselier         V(15, 10),
2465a83710eSEric Fiselier         V(17, 11),
2475a83710eSEric Fiselier         V(19, 12)
2485a83710eSEric Fiselier     };
2495a83710eSEric Fiselier     M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
2505a83710eSEric Fiselier     R r = m.lower_bound(5);
2515a83710eSEric Fiselier     assert(r == m.begin());
2525a83710eSEric Fiselier     r = m.lower_bound(7);
253*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin()));
2545a83710eSEric Fiselier     r = m.lower_bound(9);
255*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 2));
2565a83710eSEric Fiselier     r = m.lower_bound(11);
257*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 3));
2585a83710eSEric Fiselier     r = m.lower_bound(13);
259*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 4));
2605a83710eSEric Fiselier     r = m.lower_bound(15);
261*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 5));
2625a83710eSEric Fiselier     r = m.lower_bound(17);
263*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 6));
2645a83710eSEric Fiselier     r = m.lower_bound(19);
265*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 7));
2665a83710eSEric Fiselier     r = m.lower_bound(4);
267*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 0));
2685a83710eSEric Fiselier     r = m.lower_bound(6);
269*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 1));
2705a83710eSEric Fiselier     r = m.lower_bound(8);
271*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 2));
2725a83710eSEric Fiselier     r = m.lower_bound(10);
273*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 3));
2745a83710eSEric Fiselier     r = m.lower_bound(12);
275*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 4));
2765a83710eSEric Fiselier     r = m.lower_bound(14);
277*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 5));
2785a83710eSEric Fiselier     r = m.lower_bound(16);
279*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 6));
2805a83710eSEric Fiselier     r = m.lower_bound(18);
281*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 7));
2825a83710eSEric Fiselier     r = m.lower_bound(20);
283*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 8));
284f8457a07SMarshall Clow 
285f8457a07SMarshall Clow     r = m.lower_bound(C2Int(5));
286f8457a07SMarshall Clow     assert(r == m.begin());
287f8457a07SMarshall Clow     r = m.lower_bound(C2Int(7));
288*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin()));
289f8457a07SMarshall Clow     r = m.lower_bound(C2Int(9));
290*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 2));
291f8457a07SMarshall Clow     r = m.lower_bound(C2Int(11));
292*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 3));
293f8457a07SMarshall Clow     r = m.lower_bound(C2Int(13));
294*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 4));
295f8457a07SMarshall Clow     r = m.lower_bound(C2Int(15));
296*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 5));
297f8457a07SMarshall Clow     r = m.lower_bound(C2Int(17));
298*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 6));
299f8457a07SMarshall Clow     r = m.lower_bound(C2Int(19));
300*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 7));
301f8457a07SMarshall Clow     r = m.lower_bound(C2Int(4));
302*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 0));
303f8457a07SMarshall Clow     r = m.lower_bound(C2Int(6));
304*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 1));
305f8457a07SMarshall Clow     r = m.lower_bound(C2Int(8));
306*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 2));
307f8457a07SMarshall Clow     r = m.lower_bound(C2Int(10));
308*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 3));
309f8457a07SMarshall Clow     r = m.lower_bound(C2Int(12));
310*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 4));
311f8457a07SMarshall Clow     r = m.lower_bound(C2Int(14));
312*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 5));
313f8457a07SMarshall Clow     r = m.lower_bound(C2Int(16));
314*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 6));
315f8457a07SMarshall Clow     r = m.lower_bound(C2Int(18));
316*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 7));
317f8457a07SMarshall Clow     r = m.lower_bound(C2Int(20));
318*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 8));
3195a83710eSEric Fiselier     }
3205a83710eSEric Fiselier 
3215a83710eSEric Fiselier     {
3225a83710eSEric Fiselier     typedef PrivateConstructor PC;
3235a83710eSEric Fiselier     typedef std::map<PC, double, std::less<>> M;
3245a83710eSEric Fiselier     typedef M::iterator R;
3255a83710eSEric Fiselier 
3265a83710eSEric Fiselier     M m;
3275a83710eSEric Fiselier     m [ PC::make(5)  ] = 5;
3285a83710eSEric Fiselier     m [ PC::make(7)  ] = 6;
3295a83710eSEric Fiselier     m [ PC::make(9)  ] = 7;
3305a83710eSEric Fiselier     m [ PC::make(11) ] = 8;
3315a83710eSEric Fiselier     m [ PC::make(13) ] = 9;
3325a83710eSEric Fiselier     m [ PC::make(15) ] = 10;
3335a83710eSEric Fiselier     m [ PC::make(17) ] = 11;
3345a83710eSEric Fiselier     m [ PC::make(19) ] = 12;
3355a83710eSEric Fiselier 
3365a83710eSEric Fiselier     R r = m.lower_bound(5);
3375a83710eSEric Fiselier     assert(r == m.begin());
3385a83710eSEric Fiselier     r = m.lower_bound(7);
339*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin()));
3405a83710eSEric Fiselier     r = m.lower_bound(9);
341*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 2));
3425a83710eSEric Fiselier     r = m.lower_bound(11);
343*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 3));
3445a83710eSEric Fiselier     r = m.lower_bound(13);
345*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 4));
3465a83710eSEric Fiselier     r = m.lower_bound(15);
347*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 5));
3485a83710eSEric Fiselier     r = m.lower_bound(17);
349*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 6));
3505a83710eSEric Fiselier     r = m.lower_bound(19);
351*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 7));
3525a83710eSEric Fiselier     r = m.lower_bound(4);
353*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 0));
3545a83710eSEric Fiselier     r = m.lower_bound(6);
355*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 1));
3565a83710eSEric Fiselier     r = m.lower_bound(8);
357*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 2));
3585a83710eSEric Fiselier     r = m.lower_bound(10);
359*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 3));
3605a83710eSEric Fiselier     r = m.lower_bound(12);
361*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 4));
3625a83710eSEric Fiselier     r = m.lower_bound(14);
363*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 5));
3645a83710eSEric Fiselier     r = m.lower_bound(16);
365*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 6));
3665a83710eSEric Fiselier     r = m.lower_bound(18);
367*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 7));
3685a83710eSEric Fiselier     r = m.lower_bound(20);
369*5ffe11a9SArthur O'Dwyer     assert(r == std::next(m.begin(), 8));
3705a83710eSEric Fiselier     }
3715a83710eSEric Fiselier #endif
3722df59c50SJF Bastien 
3732df59c50SJF Bastien   return 0;
3745a83710eSEric Fiselier }
375