21
21
#include " private_constructor.h"
22
22
#include " is_transparent.h"
23
23
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
+
24
33
int main (int , char **) {
25
34
typedef std::pair<const int , double > V;
26
35
{
@@ -30,15 +39,15 @@ int main(int, char**) {
30
39
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 )};
31
40
M m (ar, ar + sizeof (ar) / sizeof (ar[0 ]));
32
41
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 ));
34
43
r = m.find (6 );
35
44
assert (r == m.end ());
36
45
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 ));
38
47
r = m.find (8 );
39
48
assert (r == m.end ());
40
49
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 ));
42
51
r = m.find (10 );
43
52
assert (r == m.end ());
44
53
}
@@ -47,15 +56,15 @@ int main(int, char**) {
47
56
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 )};
48
57
const M m (ar, ar + sizeof (ar) / sizeof (ar[0 ]));
49
58
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 ));
51
60
r = m.find (6 );
52
61
assert (r == m.end ());
53
62
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 ));
55
64
r = m.find (8 );
56
65
assert (r == m.end ());
57
66
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 ));
59
68
r = m.find (10 );
60
69
assert (r == m.end ());
61
70
}
@@ -68,15 +77,15 @@ int main(int, char**) {
68
77
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 )};
69
78
M m (ar, ar + sizeof (ar) / sizeof (ar[0 ]));
70
79
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 ));
72
81
r = m.find (6 );
73
82
assert (r == m.end ());
74
83
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 ));
76
85
r = m.find (8 );
77
86
assert (r == m.end ());
78
87
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 ));
80
89
r = m.find (10 );
81
90
assert (r == m.end ());
82
91
}
@@ -85,15 +94,15 @@ int main(int, char**) {
85
94
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 )};
86
95
const M m (ar, ar + sizeof (ar) / sizeof (ar[0 ]));
87
96
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 ));
89
98
r = m.find (6 );
90
99
assert (r == m.end ());
91
100
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 ));
93
102
r = m.find (8 );
94
103
assert (r == m.end ());
95
104
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 ));
97
106
r = m.find (10 );
98
107
assert (r == m.end ());
99
108
}
@@ -107,28 +116,28 @@ int main(int, char**) {
107
116
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 )};
108
117
M m (ar, ar + sizeof (ar) / sizeof (ar[0 ]));
109
118
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 ));
111
120
r = m.find (6 );
112
121
assert (r == m.end ());
113
122
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 ));
115
124
r = m.find (8 );
116
125
assert (r == m.end ());
117
126
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 ));
119
128
r = m.find (10 );
120
129
assert (r == m.end ());
121
130
122
131
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 ));
124
133
r = m.find (C2Int (6 ));
125
134
assert (r == m.end ());
126
135
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 ));
128
137
r = m.find (C2Int (8 ));
129
138
assert (r == m.end ());
130
139
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 ));
132
141
r = m.find (C2Int (10 ));
133
142
assert (r == m.end ());
134
143
}
@@ -150,15 +159,15 @@ int main(int, char**) {
150
159
m.insert (std::make_pair<PC, double >(PC::make (9 ), 3 ));
151
160
152
161
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 ));
154
163
r = m.find (6 );
155
164
assert (r == m.end ());
156
165
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 ));
158
167
r = m.find (8 );
159
168
assert (r == m.end ());
160
169
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 ));
162
171
r = m.find (10 );
163
172
assert (r == m.end ());
164
173
}
0 commit comments