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