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_map>
11b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
12b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
13b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//           class Alloc = allocator<pair<const Key, T>>>
14b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// class unordered_multimap
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_map>
24b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <string>
25b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <cassert>
26b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
27b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerint main()
28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{
29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
30b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        typedef std::unordered_multimap<int, std::string> C;
31b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        typedef std::pair<int, std::string> P;
32b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        typedef C::local_iterator I;
33b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        P a[] =
34b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        {
35b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(1, "one"),
36b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(2, "two"),
37b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(3, "three"),
38b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(4, "four"),
39b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(1, "four"),
40b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(2, "four"),
41b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        };
42b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        C c(a, a + sizeof(a)/sizeof(a[0]));
43b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(c.bucket_count() == 7);
44b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        C::size_type b = c.bucket(0);
45b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        I i = c.begin(b);
46b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        I j = c.end(b);
47b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 0);
48b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
49b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(1);
50b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.begin(b);
51b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.end(b);
52b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 2);
53b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 1);
54b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "one");
55b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        ++i;
56b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 1);
57b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "four");
58b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i->first = 2;
59b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
60b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(2);
61b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.begin(b);
62b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.end(b);
63b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 2);
64b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 2);
65b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "two");
66b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        ++i;
67b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 2);
68b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "four");
69b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
70b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(3);
71b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.begin(b);
72b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.end(b);
73b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 1);
74b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 3);
75b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "three");
76b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
77b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(4);
78b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.begin(b);
79b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.end(b);
80b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 1);
81b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 4);
82b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "four");
83b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
84b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(5);
85b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.begin(b);
86b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.end(b);
87b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 0);
88b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
89b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(6);
90b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.begin(b);
91b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.end(b);
92b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 0);
93b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
94b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
95b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        typedef std::unordered_multimap<int, std::string> C;
96b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        typedef std::pair<int, std::string> P;
97b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        typedef C::const_local_iterator I;
98b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        P a[] =
99b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        {
100b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(1, "one"),
101b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(2, "two"),
102b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(3, "three"),
103b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(4, "four"),
104b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(1, "four"),
105b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(2, "four"),
106b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        };
107b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        const C c(a, a + sizeof(a)/sizeof(a[0]));
108b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(c.bucket_count() == 7);
109b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        C::size_type b = c.bucket(0);
110b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        I i = c.begin(b);
111b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        I j = c.end(b);
112b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 0);
113b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
114b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(1);
115b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.begin(b);
116b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.end(b);
117b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 2);
118b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 1);
119b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "one");
120b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        ++i;
121b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 1);
122b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "four");
123b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
124b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(2);
125b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.begin(b);
126b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.end(b);
127b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 2);
128b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 2);
129b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "two");
130b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        ++i;
131b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 2);
132b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "four");
133b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
134b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(3);
135b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.begin(b);
136b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.end(b);
137b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 1);
138b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 3);
139b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "three");
140b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
141b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(4);
142b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.begin(b);
143b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.end(b);
144b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 1);
145b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 4);
146b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "four");
147b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
148b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(5);
149b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.begin(b);
150b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.end(b);
151b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 0);
152b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
153b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(6);
154b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.begin(b);
155b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.end(b);
156b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 0);
157b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
158b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
159b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        typedef std::unordered_multimap<int, std::string> C;
160b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        typedef std::pair<int, std::string> P;
161b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        typedef C::const_local_iterator I;
162b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        P a[] =
163b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        {
164b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(1, "one"),
165b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(2, "two"),
166b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(3, "three"),
167b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(4, "four"),
168b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(1, "four"),
169b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(2, "four"),
170b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        };
171b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        C c(a, a + sizeof(a)/sizeof(a[0]));
172b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(c.bucket_count() == 7);
173b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        C::size_type b = c.bucket(0);
174b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        I i = c.cbegin(b);
175b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        I j = c.cend(b);
176b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 0);
177b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
178b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(1);
179b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.cbegin(b);
180b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.cend(b);
181b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 2);
182b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 1);
183b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "one");
184b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        ++i;
185b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 1);
186b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "four");
187b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
188b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(2);
189b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.cbegin(b);
190b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.cend(b);
191b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 2);
192b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 2);
193b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "two");
194b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        ++i;
195b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 2);
196b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "four");
197b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
198b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(3);
199b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.cbegin(b);
200b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.cend(b);
201b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 1);
202b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 3);
203b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "three");
204b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
205b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(4);
206b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.cbegin(b);
207b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.cend(b);
208b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 1);
209b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 4);
210b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "four");
211b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
212b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(5);
213b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.cbegin(b);
214b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.cend(b);
215b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 0);
216b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
217b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(6);
218b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.cbegin(b);
219b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.cend(b);
220b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 0);
221b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
222b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
223b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        typedef std::unordered_multimap<int, std::string> C;
224b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        typedef std::pair<int, std::string> P;
225b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        typedef C::const_local_iterator I;
226b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        P a[] =
227b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        {
228b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(1, "one"),
229b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(2, "two"),
230b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(3, "three"),
231b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(4, "four"),
232b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(1, "four"),
233b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner            P(2, "four"),
234b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        };
235b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        const C c(a, a + sizeof(a)/sizeof(a[0]));
236b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(c.bucket_count() == 7);
237b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        C::size_type b = c.bucket(0);
238b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        I i = c.cbegin(b);
239b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        I j = c.cend(b);
240b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 0);
241b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
242b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(1);
243b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.cbegin(b);
244b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.cend(b);
245b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 2);
246b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 1);
247b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "one");
248b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        ++i;
249b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 1);
250b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "four");
251b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
252b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(2);
253b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.cbegin(b);
254b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.cend(b);
255b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 2);
256b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 2);
257b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "two");
258b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        ++i;
259b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 2);
260b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "four");
261b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
262b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(3);
263b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.cbegin(b);
264b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.cend(b);
265b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 1);
266b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 3);
267b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "three");
268b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
269b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(4);
270b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.cbegin(b);
271b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.cend(b);
272b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 1);
273b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->first == 4);
274b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(i->second == "four");
275b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
276b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(5);
277b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.cbegin(b);
278b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.cend(b);
279b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 0);
280b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
281b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        b = c.bucket(6);
282b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        i = c.cbegin(b);
283b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        j = c.cend(b);
284b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(std::distance(i, j) == 0);
285b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
286b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner}
287