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