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_set 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 265de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh#include "min_allocator.h" 27ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerint main() 29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 30b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 31b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::unordered_set<int> C; 32b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef int P; 33b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef C::local_iterator I; 34b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P a[] = 35b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 36b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1), 37b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2), 38b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(3), 39b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(4), 40b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1), 41b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2) 42b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner }; 43b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner C c(a, a + sizeof(a)/sizeof(a[0])); 44b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(c.bucket_count() >= 5); 45b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner C::size_type b = c.bucket(0); 46b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I i = c.begin(b); 47b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I j = c.end(b); 48b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 49b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 50b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(1); 51b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 52b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 53b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 54b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 1); 55b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 56b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(2); 57b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 58b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 59b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 60b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 2); 61b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 62b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(3); 63b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 64b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 65b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 66b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 3); 67b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 68b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(4); 69b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 70b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 71b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 72b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 4); 73b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 74b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 75b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::unordered_set<int> C; 76b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef int P; 77b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef C::const_local_iterator I; 78b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P a[] = 79b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 80b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1), 81b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2), 82b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(3), 83b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(4), 84b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1), 85b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2) 86b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner }; 87b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner const C c(a, a + sizeof(a)/sizeof(a[0])); 88b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(c.bucket_count() >= 5); 89b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner C::size_type b = c.bucket(0); 90b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I i = c.begin(b); 91b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I j = c.end(b); 92b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 93b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 94b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(1); 95b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 96b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 97b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 98b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 1); 99b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 100b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(2); 101b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 102b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 103b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 104b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 2); 105b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 106b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(3); 107b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 108b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 109b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 110b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 3); 111b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 112b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(4); 113b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 114b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 115b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 116b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 4); 117b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 118b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 119b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::unordered_set<int> C; 120b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef int P; 121b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef C::const_local_iterator I; 122b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P a[] = 123b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 124b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1), 125b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2), 126b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(3), 127b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(4), 128b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1), 129b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2) 130b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner }; 131b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner C c(a, a + sizeof(a)/sizeof(a[0])); 132b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(c.bucket_count() >= 5); 133b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner C::size_type b = c.bucket(0); 134b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I i = c.cbegin(b); 135b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I j = c.cend(b); 136b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 137b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 138b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(1); 139b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 140b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 141b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 142b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 1); 143b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 144b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(2); 145b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 146b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 147b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 148b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 2); 149b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 150b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(3); 151b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 152b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 153b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 154b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 3); 155b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 156b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(4); 157b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 158b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 159b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 160b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 4); 161b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 162b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 163b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::unordered_set<int> C; 164b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef int P; 165b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef C::const_local_iterator I; 166b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P a[] = 167b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 168b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1), 169b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2), 170b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(3), 171b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(4), 172b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1), 173b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2) 174b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner }; 175b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner const C c(a, a + sizeof(a)/sizeof(a[0])); 176b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(c.bucket_count() >= 5); 177b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner C::size_type b = c.bucket(0); 178b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I i = c.cbegin(b); 179b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I j = c.cend(b); 180b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 181b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 182b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(1); 183b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 184b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 185b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 186b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 1); 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) == 1); 192b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 2); 193b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 194b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(3); 195b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 196b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 197b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 198b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 3); 199b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 200b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(4); 201b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 202b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 203b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 204b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(*i == 4); 205b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 206ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner#if __cplusplus >= 201103L 207ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 208ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef std::unordered_set<int, std::hash<int>, 209ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner std::equal_to<int>, min_allocator<int>> C; 210ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef int P; 211ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef C::local_iterator I; 212ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P a[] = 213ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 214ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(1), 215ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(2), 216ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(3), 217ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(4), 218ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(1), 219ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(2) 220ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner }; 221ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner C c(a, a + sizeof(a)/sizeof(a[0])); 222ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(c.bucket_count() >= 5); 223ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner C::size_type b = c.bucket(0); 224ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner I i = c.begin(b); 225ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner I j = c.end(b); 226ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 0); 227ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 228ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(1); 229ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.begin(b); 230ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.end(b); 231ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 232ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 1); 233ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 234ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(2); 235ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.begin(b); 236ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.end(b); 237ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 238ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 2); 239ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 240ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(3); 241ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.begin(b); 242ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.end(b); 243ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 244ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 3); 245ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 246ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(4); 247ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.begin(b); 248ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.end(b); 249ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 250ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 4); 251ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner } 252ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 253ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef std::unordered_set<int, std::hash<int>, 254ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner std::equal_to<int>, min_allocator<int>> C; 255ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef int P; 256ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef C::const_local_iterator I; 257ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P a[] = 258ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 259ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(1), 260ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(2), 261ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(3), 262ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(4), 263ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(1), 264ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(2) 265ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner }; 266ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner const C c(a, a + sizeof(a)/sizeof(a[0])); 267ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(c.bucket_count() >= 5); 268ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner C::size_type b = c.bucket(0); 269ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner I i = c.begin(b); 270ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner I j = c.end(b); 271ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 0); 272ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 273ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(1); 274ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.begin(b); 275ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.end(b); 276ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 277ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 1); 278ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 279ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(2); 280ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.begin(b); 281ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.end(b); 282ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 283ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 2); 284ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 285ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(3); 286ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.begin(b); 287ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.end(b); 288ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 289ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 3); 290ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 291ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(4); 292ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.begin(b); 293ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.end(b); 294ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 295ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 4); 296ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner } 297ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 298ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef std::unordered_set<int, std::hash<int>, 299ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner std::equal_to<int>, min_allocator<int>> C; 300ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef int P; 301ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef C::const_local_iterator I; 302ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P a[] = 303ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 304ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(1), 305ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(2), 306ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(3), 307ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(4), 308ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(1), 309ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(2) 310ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner }; 311ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner C c(a, a + sizeof(a)/sizeof(a[0])); 312ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(c.bucket_count() >= 5); 313ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner C::size_type b = c.bucket(0); 314ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner I i = c.cbegin(b); 315ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner I j = c.cend(b); 316ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 0); 317ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 318ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(1); 319ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.cbegin(b); 320ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.cend(b); 321ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 322ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 1); 323ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 324ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(2); 325ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.cbegin(b); 326ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.cend(b); 327ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 328ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 2); 329ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 330ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(3); 331ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.cbegin(b); 332ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.cend(b); 333ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 334ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 3); 335ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 336ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(4); 337ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.cbegin(b); 338ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.cend(b); 339ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 340ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 4); 341ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner } 342ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 343ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef std::unordered_set<int, std::hash<int>, 344ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner std::equal_to<int>, min_allocator<int>> C; 345ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef int P; 346ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner typedef C::const_local_iterator I; 347ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P a[] = 348ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner { 349ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(1), 350ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(2), 351ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(3), 352ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(4), 353ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(1), 354ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner P(2) 355ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner }; 356ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner const C c(a, a + sizeof(a)/sizeof(a[0])); 357ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(c.bucket_count() >= 5); 358ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner C::size_type b = c.bucket(0); 359ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner I i = c.cbegin(b); 360ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner I j = c.cend(b); 361ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 0); 362ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 363ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(1); 364ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.cbegin(b); 365ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.cend(b); 366ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 367ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 1); 368ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 369ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(2); 370ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.cbegin(b); 371ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.cend(b); 372ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 373ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 2); 374ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 375ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(3); 376ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.cbegin(b); 377ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.cend(b); 378ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 379ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 3); 380ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner 381ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner b = c.bucket(4); 382ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner i = c.cbegin(b); 383ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner j = c.cend(b); 384ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(std::distance(i, j) == 1); 385ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner assert(*i == 4); 386ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner } 387ad46d2248426e810edc5878c7cb086b7093f3cf5David 'Digit' Turner#endif 388b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 389