1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant//                     The LLVM Compiler Infrastructure
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <unordered_set>
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// template <class Value, class Hash = hash<Value>, class Pred = equal_to<Value>,
13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//           class Alloc = allocator<Value>>
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// class unordered_set
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// local_iterator       begin (size_type n);
17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// local_iterator       end   (size_type n);
18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// const_local_iterator begin (size_type n) const;
19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// const_local_iterator end   (size_type n) const;
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// const_local_iterator cbegin(size_type n) const;
21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// const_local_iterator cend  (size_type n) const;
22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <unordered_set>
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert>
25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main()
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::unordered_set<int> C;
30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int P;
31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef C::local_iterator I;
32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        P a[] =
33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        {
34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(1),
35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(2),
36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(3),
37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(4),
38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(1),
39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(2)
40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        };
41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c(a, a + sizeof(a)/sizeof(a[0]));
42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.bucket_count() >= 5);
43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C::size_type b = c.bucket(0);
44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        I i = c.begin(b);
45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        I j = c.end(b);
46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 0);
47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(1);
49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.begin(b);
50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.end(b);
51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 2);
52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 1);
53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 1);
55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        *i = 2;
56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(2);
58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.begin(b);
59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.end(b);
60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 2);
61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 2);
62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 2);
64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(3);
66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.begin(b);
67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.end(b);
68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 1);
69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 3);
70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(4);
72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.begin(b);
73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.end(b);
74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 1);
75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 4);
76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(5);
78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.begin(b);
79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.end(b);
80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 0);
81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(6);
83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.begin(b);
84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.end(b);
85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 0);
86bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::unordered_set<int> C;
89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int P;
90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef C::const_local_iterator I;
91bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        P a[] =
92bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        {
93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(1),
94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(2),
95bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(3),
96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(4),
97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(1),
98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(2)
99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        };
100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        const C c(a, a + sizeof(a)/sizeof(a[0]));
101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.bucket_count() >= 5);
102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C::size_type b = c.bucket(0);
103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        I i = c.begin(b);
104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        I j = c.end(b);
105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 0);
106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(1);
108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.begin(b);
109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.end(b);
110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 2);
111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 1);
112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 1);
114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(2);
116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.begin(b);
117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.end(b);
118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 2);
119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 2);
120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 2);
122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(3);
124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.begin(b);
125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.end(b);
126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 1);
127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 3);
128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(4);
130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.begin(b);
131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.end(b);
132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 1);
133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 4);
134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(5);
136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.begin(b);
137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.end(b);
138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 0);
139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(6);
141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.begin(b);
142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.end(b);
143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 0);
144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::unordered_set<int> C;
147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int P;
148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef C::const_local_iterator I;
149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        P a[] =
150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        {
151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(1),
152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(2),
153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(3),
154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(4),
155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(1),
156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(2)
157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        };
158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c(a, a + sizeof(a)/sizeof(a[0]));
159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.bucket_count() >= 5);
160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C::size_type b = c.bucket(0);
161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        I i = c.cbegin(b);
162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        I j = c.cend(b);
163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 0);
164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(1);
166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.cbegin(b);
167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.cend(b);
168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 2);
169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 1);
170bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 1);
172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(2);
174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.cbegin(b);
175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.cend(b);
176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 2);
177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 2);
178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 2);
180bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(3);
182bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.cbegin(b);
183bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.cend(b);
184bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 1);
185bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 3);
186bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(4);
188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.cbegin(b);
189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.cend(b);
190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 1);
191bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 4);
192bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(5);
194bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.cbegin(b);
195bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.cend(b);
196bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 0);
197bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
198bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(6);
199bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.cbegin(b);
200bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.cend(b);
201bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 0);
202bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
203bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::unordered_set<int> C;
205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int P;
206bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef C::const_local_iterator I;
207bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        P a[] =
208bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        {
209bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(1),
210bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(2),
211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(3),
212bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(4),
213bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(1),
214bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            P(2)
215bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        };
216bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        const C c(a, a + sizeof(a)/sizeof(a[0]));
217bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c.bucket_count() >= 5);
218bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C::size_type b = c.bucket(0);
219bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        I i = c.cbegin(b);
220bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        I j = c.cend(b);
221bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 0);
222bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
223bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(1);
224bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.cbegin(b);
225bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.cend(b);
226bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 2);
227bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 1);
228bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
229bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 1);
230bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
231bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(2);
232bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.cbegin(b);
233bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.cend(b);
234bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 2);
235bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 2);
236bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        ++i;
237bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 2);
238bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
239bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(3);
240bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.cbegin(b);
241bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.cend(b);
242bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 1);
243bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 3);
244bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
245bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(4);
246bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.cbegin(b);
247bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.cend(b);
248bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 1);
249bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*i == 4);
250bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
251bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(5);
252bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.cbegin(b);
253bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.cend(b);
254bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 0);
255bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
256bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        b = c.bucket(6);
257bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        i = c.cbegin(b);
258bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        j = c.cend(b);
259bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(std::distance(i, j) == 0);
260bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
261bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}
262