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 // pair<iterator,iterator> equal_range(const key_type& k);
145a83710eSEric Fiselier // pair<const_iterator,const_iterator> equal_range(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 std::pair<M::iterator, 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.equal_range(5);
44*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
45*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
465a83710eSEric Fiselier r = m.equal_range(7);
47*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
48*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
495a83710eSEric Fiselier r = m.equal_range(9);
50*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
51*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
525a83710eSEric Fiselier r = m.equal_range(11);
53*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
54*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
555a83710eSEric Fiselier r = m.equal_range(13);
56*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
57*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
585a83710eSEric Fiselier r = m.equal_range(15);
59*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
60*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
615a83710eSEric Fiselier r = m.equal_range(17);
62*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
63*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
645a83710eSEric Fiselier r = m.equal_range(19);
65*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
66*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
675a83710eSEric Fiselier r = m.equal_range(4);
68*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
69*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 0));
705a83710eSEric Fiselier r = m.equal_range(6);
71*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
72*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
735a83710eSEric Fiselier r = m.equal_range(8);
74*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
75*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
765a83710eSEric Fiselier r = m.equal_range(10);
77*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
78*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
795a83710eSEric Fiselier r = m.equal_range(12);
80*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
81*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
825a83710eSEric Fiselier r = m.equal_range(14);
83*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
84*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
855a83710eSEric Fiselier r = m.equal_range(16);
86*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
87*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
885a83710eSEric Fiselier r = m.equal_range(18);
89*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
90*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
915a83710eSEric Fiselier r = m.equal_range(20);
92*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 8));
93*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
945a83710eSEric Fiselier }
955a83710eSEric Fiselier {
965a83710eSEric Fiselier typedef std::pair<M::const_iterator, M::const_iterator> R;
975a83710eSEric Fiselier V ar[] =
985a83710eSEric Fiselier {
995a83710eSEric Fiselier V(5, 5),
1005a83710eSEric Fiselier V(7, 6),
1015a83710eSEric Fiselier V(9, 7),
1025a83710eSEric Fiselier V(11, 8),
1035a83710eSEric Fiselier V(13, 9),
1045a83710eSEric Fiselier V(15, 10),
1055a83710eSEric Fiselier V(17, 11),
1065a83710eSEric Fiselier V(19, 12)
1075a83710eSEric Fiselier };
1085a83710eSEric Fiselier const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
1095a83710eSEric Fiselier R r = m.equal_range(5);
110*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
111*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
1125a83710eSEric Fiselier r = m.equal_range(7);
113*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
114*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
1155a83710eSEric Fiselier r = m.equal_range(9);
116*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
117*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
1185a83710eSEric Fiselier r = m.equal_range(11);
119*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
120*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
1215a83710eSEric Fiselier r = m.equal_range(13);
122*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
123*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
1245a83710eSEric Fiselier r = m.equal_range(15);
125*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
126*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
1275a83710eSEric Fiselier r = m.equal_range(17);
128*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
129*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
1305a83710eSEric Fiselier r = m.equal_range(19);
131*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
132*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
1335a83710eSEric Fiselier r = m.equal_range(4);
134*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
135*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 0));
1365a83710eSEric Fiselier r = m.equal_range(6);
137*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
138*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
1395a83710eSEric Fiselier r = m.equal_range(8);
140*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
141*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
1425a83710eSEric Fiselier r = m.equal_range(10);
143*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
144*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
1455a83710eSEric Fiselier r = m.equal_range(12);
146*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
147*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
1485a83710eSEric Fiselier r = m.equal_range(14);
149*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
150*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
1515a83710eSEric Fiselier r = m.equal_range(16);
152*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
153*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
1545a83710eSEric Fiselier r = m.equal_range(18);
155*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
156*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
1575a83710eSEric Fiselier r = m.equal_range(20);
158*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 8));
159*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
1605a83710eSEric Fiselier }
1615a83710eSEric Fiselier }
162f2f2a639SEric Fiselier #if TEST_STD_VER >= 11
1635a83710eSEric Fiselier {
1645a83710eSEric Fiselier typedef std::pair<const int, double> V;
1655a83710eSEric Fiselier typedef std::map<int, double, std::less<int>, min_allocator<V>> M;
1665a83710eSEric Fiselier {
1675a83710eSEric Fiselier typedef std::pair<M::iterator, M::iterator> R;
1685a83710eSEric Fiselier V ar[] =
1695a83710eSEric Fiselier {
1705a83710eSEric Fiselier V(5, 5),
1715a83710eSEric Fiselier V(7, 6),
1725a83710eSEric Fiselier V(9, 7),
1735a83710eSEric Fiselier V(11, 8),
1745a83710eSEric Fiselier V(13, 9),
1755a83710eSEric Fiselier V(15, 10),
1765a83710eSEric Fiselier V(17, 11),
1775a83710eSEric Fiselier V(19, 12)
1785a83710eSEric Fiselier };
1795a83710eSEric Fiselier M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
1805a83710eSEric Fiselier R r = m.equal_range(5);
181*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
182*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
1835a83710eSEric Fiselier r = m.equal_range(7);
184*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
185*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
1865a83710eSEric Fiselier r = m.equal_range(9);
187*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
188*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
1895a83710eSEric Fiselier r = m.equal_range(11);
190*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
191*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
1925a83710eSEric Fiselier r = m.equal_range(13);
193*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
194*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
1955a83710eSEric Fiselier r = m.equal_range(15);
196*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
197*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
1985a83710eSEric Fiselier r = m.equal_range(17);
199*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
200*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
2015a83710eSEric Fiselier r = m.equal_range(19);
202*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
203*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
2045a83710eSEric Fiselier r = m.equal_range(4);
205*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
206*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 0));
2075a83710eSEric Fiselier r = m.equal_range(6);
208*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
209*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
2105a83710eSEric Fiselier r = m.equal_range(8);
211*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
212*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
2135a83710eSEric Fiselier r = m.equal_range(10);
214*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
215*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
2165a83710eSEric Fiselier r = m.equal_range(12);
217*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
218*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
2195a83710eSEric Fiselier r = m.equal_range(14);
220*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
221*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
2225a83710eSEric Fiselier r = m.equal_range(16);
223*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
224*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
2255a83710eSEric Fiselier r = m.equal_range(18);
226*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
227*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
2285a83710eSEric Fiselier r = m.equal_range(20);
229*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 8));
230*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
2315a83710eSEric Fiselier }
2325a83710eSEric Fiselier {
2335a83710eSEric Fiselier typedef std::pair<M::const_iterator, M::const_iterator> R;
2345a83710eSEric Fiselier V ar[] =
2355a83710eSEric Fiselier {
2365a83710eSEric Fiselier V(5, 5),
2375a83710eSEric Fiselier V(7, 6),
2385a83710eSEric Fiselier V(9, 7),
2395a83710eSEric Fiselier V(11, 8),
2405a83710eSEric Fiselier V(13, 9),
2415a83710eSEric Fiselier V(15, 10),
2425a83710eSEric Fiselier V(17, 11),
2435a83710eSEric Fiselier V(19, 12)
2445a83710eSEric Fiselier };
2455a83710eSEric Fiselier const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
2465a83710eSEric Fiselier R r = m.equal_range(5);
247*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
248*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
2495a83710eSEric Fiselier r = m.equal_range(7);
250*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
251*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
2525a83710eSEric Fiselier r = m.equal_range(9);
253*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
254*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
2555a83710eSEric Fiselier r = m.equal_range(11);
256*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
257*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
2585a83710eSEric Fiselier r = m.equal_range(13);
259*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
260*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
2615a83710eSEric Fiselier r = m.equal_range(15);
262*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
263*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
2645a83710eSEric Fiselier r = m.equal_range(17);
265*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
266*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
2675a83710eSEric Fiselier r = m.equal_range(19);
268*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
269*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
2705a83710eSEric Fiselier r = m.equal_range(4);
271*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
272*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 0));
2735a83710eSEric Fiselier r = m.equal_range(6);
274*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
275*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
2765a83710eSEric Fiselier r = m.equal_range(8);
277*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
278*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
2795a83710eSEric Fiselier r = m.equal_range(10);
280*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
281*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
2825a83710eSEric Fiselier r = m.equal_range(12);
283*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
284*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
2855a83710eSEric Fiselier r = m.equal_range(14);
286*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
287*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
2885a83710eSEric Fiselier r = m.equal_range(16);
289*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
290*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
2915a83710eSEric Fiselier r = m.equal_range(18);
292*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
293*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
2945a83710eSEric Fiselier r = m.equal_range(20);
295*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 8));
296*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
2975a83710eSEric Fiselier }
2985a83710eSEric Fiselier }
2995a83710eSEric Fiselier #endif
3000f901c7eSStephan T. Lavavej #if TEST_STD_VER > 11
3015a83710eSEric Fiselier {
3025a83710eSEric Fiselier typedef std::pair<const int, double> V;
3035a83710eSEric Fiselier typedef std::map<int, double, std::less<>> M;
3045a83710eSEric Fiselier typedef std::pair<M::iterator, M::iterator> R;
3055a83710eSEric Fiselier
3065a83710eSEric Fiselier V ar[] =
3075a83710eSEric Fiselier {
3085a83710eSEric Fiselier V(5, 5),
3095a83710eSEric Fiselier V(7, 6),
3105a83710eSEric Fiselier V(9, 7),
3115a83710eSEric Fiselier V(11, 8),
3125a83710eSEric Fiselier V(13, 9),
3135a83710eSEric Fiselier V(15, 10),
3145a83710eSEric Fiselier V(17, 11),
3155a83710eSEric Fiselier V(19, 12)
3165a83710eSEric Fiselier };
3175a83710eSEric Fiselier M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
3185a83710eSEric Fiselier R r = m.equal_range(5);
319*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
320*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
3215a83710eSEric Fiselier r = m.equal_range(7);
322*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
323*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
3245a83710eSEric Fiselier r = m.equal_range(9);
325*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
326*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
3275a83710eSEric Fiselier r = m.equal_range(11);
328*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
329*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
3305a83710eSEric Fiselier r = m.equal_range(13);
331*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
332*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
3335a83710eSEric Fiselier r = m.equal_range(15);
334*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
335*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
3365a83710eSEric Fiselier r = m.equal_range(17);
337*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
338*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
3395a83710eSEric Fiselier r = m.equal_range(19);
340*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
341*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
3425a83710eSEric Fiselier r = m.equal_range(4);
343*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
344*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 0));
3455a83710eSEric Fiselier r = m.equal_range(6);
346*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
347*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
3485a83710eSEric Fiselier r = m.equal_range(8);
349*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
350*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
3515a83710eSEric Fiselier r = m.equal_range(10);
352*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
353*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
3545a83710eSEric Fiselier r = m.equal_range(12);
355*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
356*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
3575a83710eSEric Fiselier r = m.equal_range(14);
358*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
359*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
3605a83710eSEric Fiselier r = m.equal_range(16);
361*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
362*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
3635a83710eSEric Fiselier r = m.equal_range(18);
364*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
365*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
3665a83710eSEric Fiselier r = m.equal_range(20);
367*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 8));
368*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
369f8457a07SMarshall Clow
370f8457a07SMarshall Clow r = m.equal_range(C2Int(5));
371*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
372*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
373f8457a07SMarshall Clow r = m.equal_range(C2Int(7));
374*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
375*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
376f8457a07SMarshall Clow r = m.equal_range(C2Int(9));
377*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
378*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
379f8457a07SMarshall Clow r = m.equal_range(C2Int(11));
380*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
381*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
382f8457a07SMarshall Clow r = m.equal_range(C2Int(13));
383*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
384*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
385f8457a07SMarshall Clow r = m.equal_range(C2Int(15));
386*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
387*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
388f8457a07SMarshall Clow r = m.equal_range(C2Int(17));
389*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
390*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
391f8457a07SMarshall Clow r = m.equal_range(C2Int(19));
392*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
393*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
394f8457a07SMarshall Clow r = m.equal_range(C2Int(4));
395*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
396*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 0));
397f8457a07SMarshall Clow r = m.equal_range(C2Int(6));
398*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
399*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
400f8457a07SMarshall Clow r = m.equal_range(C2Int(8));
401*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
402*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
403f8457a07SMarshall Clow r = m.equal_range(C2Int(10));
404*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
405*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
406f8457a07SMarshall Clow r = m.equal_range(C2Int(12));
407*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
408*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
409f8457a07SMarshall Clow r = m.equal_range(C2Int(14));
410*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
411*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
412f8457a07SMarshall Clow r = m.equal_range(C2Int(16));
413*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
414*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
415f8457a07SMarshall Clow r = m.equal_range(C2Int(18));
416*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
417*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
418f8457a07SMarshall Clow r = m.equal_range(C2Int(20));
419*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 8));
420*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
4215a83710eSEric Fiselier }
4225a83710eSEric Fiselier {
4235a83710eSEric Fiselier typedef PrivateConstructor PC;
4245a83710eSEric Fiselier typedef std::map<PC, double, std::less<>> M;
4255a83710eSEric Fiselier typedef std::pair<M::iterator, M::iterator> R;
4265a83710eSEric Fiselier
4275a83710eSEric Fiselier M m;
4285a83710eSEric Fiselier m [ PC::make(5) ] = 5;
4295a83710eSEric Fiselier m [ PC::make(7) ] = 6;
4305a83710eSEric Fiselier m [ PC::make(9) ] = 7;
4315a83710eSEric Fiselier m [ PC::make(11) ] = 8;
4325a83710eSEric Fiselier m [ PC::make(13) ] = 9;
4335a83710eSEric Fiselier m [ PC::make(15) ] = 10;
4345a83710eSEric Fiselier m [ PC::make(17) ] = 11;
4355a83710eSEric Fiselier m [ PC::make(19) ] = 12;
4365a83710eSEric Fiselier
4375a83710eSEric Fiselier R r = m.equal_range(5);
438*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
439*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
4405a83710eSEric Fiselier r = m.equal_range(7);
441*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
442*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
4435a83710eSEric Fiselier r = m.equal_range(9);
444*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
445*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
4465a83710eSEric Fiselier r = m.equal_range(11);
447*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
448*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
4495a83710eSEric Fiselier r = m.equal_range(13);
450*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
451*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
4525a83710eSEric Fiselier r = m.equal_range(15);
453*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
454*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
4555a83710eSEric Fiselier r = m.equal_range(17);
456*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
457*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
4585a83710eSEric Fiselier r = m.equal_range(19);
459*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
460*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
4615a83710eSEric Fiselier r = m.equal_range(4);
462*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 0));
463*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 0));
4645a83710eSEric Fiselier r = m.equal_range(6);
465*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 1));
466*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 1));
4675a83710eSEric Fiselier r = m.equal_range(8);
468*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 2));
469*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 2));
4705a83710eSEric Fiselier r = m.equal_range(10);
471*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 3));
472*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 3));
4735a83710eSEric Fiselier r = m.equal_range(12);
474*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 4));
475*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 4));
4765a83710eSEric Fiselier r = m.equal_range(14);
477*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 5));
478*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 5));
4795a83710eSEric Fiselier r = m.equal_range(16);
480*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 6));
481*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 6));
4825a83710eSEric Fiselier r = m.equal_range(18);
483*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 7));
484*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 7));
4855a83710eSEric Fiselier r = m.equal_range(20);
486*5ffe11a9SArthur O'Dwyer assert(r.first == std::next(m.begin(), 8));
487*5ffe11a9SArthur O'Dwyer assert(r.second == std::next(m.begin(), 8));
4885a83710eSEric Fiselier }
4895a83710eSEric Fiselier #endif
4902df59c50SJF Bastien
4912df59c50SJF Bastien return 0;
4925a83710eSEric Fiselier }
493