2121#include " private_constructor.h"
2222#include " is_transparent.h"
2323
24+ template <class Iter >
25+ bool iter_in_range (Iter first, Iter last, Iter to_find) {
26+ for (; first != last; ++first) {
27+ if (first == to_find)
28+ return true ;
29+ }
30+ return false ;
31+ }
32+
2433int main (int , char **) {
2534 typedef std::pair<const int , double > V;
2635 {
@@ -30,15 +39,15 @@ int main(int, char**) {
3039 V ar[] = {V (5 , 1 ), V (5 , 2 ), V (5 , 3 ), V (7 , 1 ), V (7 , 2 ), V (7 , 3 ), V (9 , 1 ), V (9 , 2 ), V (9 , 3 )};
3140 M m (ar, ar + sizeof (ar) / sizeof (ar[0 ]));
3241 R r = m.find (5 );
33- assert (r == m.begin ());
42+ assert (iter_in_range ( std::next (m. begin (), 0 ), std::next ( m.begin (), 3 ), r ));
3443 r = m.find (6 );
3544 assert (r == m.end ());
3645 r = m.find (7 );
37- assert (r == std::next (m.begin (), 3 ));
46+ assert (iter_in_range ( std::next (m. begin (), 3 ), std::next (m.begin (), 6 ), r ));
3847 r = m.find (8 );
3948 assert (r == m.end ());
4049 r = m.find (9 );
41- assert (r == std::next (m.begin (), 6 ));
50+ assert (iter_in_range ( std::next (m. begin (), 6 ), std::next (m.begin (), 9 ), r ));
4251 r = m.find (10 );
4352 assert (r == m.end ());
4453 }
@@ -47,15 +56,15 @@ int main(int, char**) {
4756 V ar[] = {V (5 , 1 ), V (5 , 2 ), V (5 , 3 ), V (7 , 1 ), V (7 , 2 ), V (7 , 3 ), V (9 , 1 ), V (9 , 2 ), V (9 , 3 )};
4857 const M m (ar, ar + sizeof (ar) / sizeof (ar[0 ]));
4958 R r = m.find (5 );
50- assert (r == m.begin ());
59+ assert (iter_in_range ( std::next (m. begin (), 0 ), std::next ( m.begin (), 3 ), r ));
5160 r = m.find (6 );
5261 assert (r == m.end ());
5362 r = m.find (7 );
54- assert (r == std::next (m.begin (), 3 ));
63+ assert (iter_in_range ( std::next (m. begin (), 3 ), std::next (m.begin (), 6 ), r ));
5564 r = m.find (8 );
5665 assert (r == m.end ());
5766 r = m.find (9 );
58- assert (r == std::next (m.begin (), 6 ));
67+ assert (iter_in_range ( std::next (m. begin (), 6 ), std::next (m.begin (), 9 ), r ));
5968 r = m.find (10 );
6069 assert (r == m.end ());
6170 }
@@ -68,15 +77,15 @@ int main(int, char**) {
6877 V ar[] = {V (5 , 1 ), V (5 , 2 ), V (5 , 3 ), V (7 , 1 ), V (7 , 2 ), V (7 , 3 ), V (9 , 1 ), V (9 , 2 ), V (9 , 3 )};
6978 M m (ar, ar + sizeof (ar) / sizeof (ar[0 ]));
7079 R r = m.find (5 );
71- assert (r == m.begin ());
80+ assert (iter_in_range ( std::next (m. begin (), 0 ), std::next ( m.begin (), 3 ), r ));
7281 r = m.find (6 );
7382 assert (r == m.end ());
7483 r = m.find (7 );
75- assert (r == std::next (m.begin (), 3 ));
84+ assert (iter_in_range ( std::next (m. begin (), 3 ), std::next (m.begin (), 6 ), r ));
7685 r = m.find (8 );
7786 assert (r == m.end ());
7887 r = m.find (9 );
79- assert (r == std::next (m.begin (), 6 ));
88+ assert (iter_in_range ( std::next (m. begin (), 6 ), std::next (m.begin (), 9 ), r ));
8089 r = m.find (10 );
8190 assert (r == m.end ());
8291 }
@@ -85,15 +94,15 @@ int main(int, char**) {
8594 V ar[] = {V (5 , 1 ), V (5 , 2 ), V (5 , 3 ), V (7 , 1 ), V (7 , 2 ), V (7 , 3 ), V (9 , 1 ), V (9 , 2 ), V (9 , 3 )};
8695 const M m (ar, ar + sizeof (ar) / sizeof (ar[0 ]));
8796 R r = m.find (5 );
88- assert (r == m.begin ());
97+ assert (iter_in_range ( std::next (m. begin (), 0 ), std::next ( m.begin (), 3 ), r ));
8998 r = m.find (6 );
9099 assert (r == m.end ());
91100 r = m.find (7 );
92- assert (r == std::next (m.begin (), 3 ));
101+ assert (iter_in_range ( std::next (m. begin (), 3 ), std::next (m.begin (), 6 ), r ));
93102 r = m.find (8 );
94103 assert (r == m.end ());
95104 r = m.find (9 );
96- assert (r == std::next (m.begin (), 6 ));
105+ assert (iter_in_range ( std::next (m. begin (), 6 ), std::next (m.begin (), 9 ), r ));
97106 r = m.find (10 );
98107 assert (r == m.end ());
99108 }
@@ -107,28 +116,28 @@ int main(int, char**) {
107116 V ar[] = {V (5 , 1 ), V (5 , 2 ), V (5 , 3 ), V (7 , 1 ), V (7 , 2 ), V (7 , 3 ), V (9 , 1 ), V (9 , 2 ), V (9 , 3 )};
108117 M m (ar, ar + sizeof (ar) / sizeof (ar[0 ]));
109118 R r = m.find (5 );
110- assert (r == m.begin ());
119+ assert (iter_in_range ( std::next (m. begin (), 0 ), std::next ( m.begin (), 3 ), r ));
111120 r = m.find (6 );
112121 assert (r == m.end ());
113122 r = m.find (7 );
114- assert (r == std::next (m.begin (), 3 ));
123+ assert (iter_in_range ( std::next (m. begin (), 3 ), std::next (m.begin (), 6 ), r ));
115124 r = m.find (8 );
116125 assert (r == m.end ());
117126 r = m.find (9 );
118- assert (r == std::next (m.begin (), 6 ));
127+ assert (iter_in_range ( std::next (m. begin (), 6 ), std::next (m.begin (), 9 ), r ));
119128 r = m.find (10 );
120129 assert (r == m.end ());
121130
122131 r = m.find (C2Int (5 ));
123- assert (r == m.begin ());
132+ assert (iter_in_range ( std::next (m. begin (), 0 ), std::next ( m.begin (), 3 ), r ));
124133 r = m.find (C2Int (6 ));
125134 assert (r == m.end ());
126135 r = m.find (C2Int (7 ));
127- assert (r == std::next (m.begin (), 3 ));
136+ assert (iter_in_range ( std::next (m. begin (), 3 ), std::next (m.begin (), 6 ), r ));
128137 r = m.find (C2Int (8 ));
129138 assert (r == m.end ());
130139 r = m.find (C2Int (9 ));
131- assert (r == std::next (m.begin (), 6 ));
140+ assert (iter_in_range ( std::next (m. begin (), 6 ), std::next (m.begin (), 9 ), r ));
132141 r = m.find (C2Int (10 ));
133142 assert (r == m.end ());
134143 }
@@ -150,15 +159,15 @@ int main(int, char**) {
150159 m.insert (std::make_pair<PC, double >(PC::make (9 ), 3 ));
151160
152161 R r = m.find (5 );
153- assert (r == m.begin ());
162+ assert (iter_in_range ( std::next (m. begin (), 0 ), std::next ( m.begin (), 3 ), r ));
154163 r = m.find (6 );
155164 assert (r == m.end ());
156165 r = m.find (7 );
157- assert (r == std::next (m.begin (), 3 ));
166+ assert (iter_in_range ( std::next (m. begin (), 3 ), std::next (m.begin (), 6 ), r ));
158167 r = m.find (8 );
159168 assert (r == m.end ());
160169 r = m.find (9 );
161- assert (r == std::next (m.begin (), 6 ));
170+ assert (iter_in_range ( std::next (m. begin (), 6 ), std::next (m.begin (), 9 ), r ));
162171 r = m.find (10 );
163172 assert (r == m.end ());
164173 }
0 commit comments