]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/25_algorithms/headers/algorithm/synopsis.cc
stl_algo.h (__find_if_not, [...]): Add in C++0x, per N2666.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 25_algorithms / headers / algorithm / synopsis.cc
1 // { dg-do compile }
2
3 // Copyright (C) 2007, 2008 Free Software Foundation, Inc.
4 //
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 2, or (at your option)
9 // any later version.
10
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING. If not, write to the Free
18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
19 // USA.
20
21 #include <algorithm>
22
23 namespace std
24 {
25 // 25.1, non-modifying sequence operations:
26 template<typename _IIter, typename _Funct>
27 _Funct
28 for_each(_IIter, _IIter, _Funct);
29
30 template<typename _IIter, typename _Tp>
31 _IIter
32 find(_IIter, _IIter, const _Tp&);
33
34 template<typename _IIter, typename _Predicate>
35 _IIter
36 find_if(_IIter, _IIter, _Predicate);
37
38 #ifdef __GXX_EXPERIMENTAL_CXX0X__
39 template<typename _IIter, typename _Predicate>
40 bool
41 all_of(_IIter, _IIter, _Predicate);
42
43 template<typename _IIter, typename _Predicate>
44 bool
45 any_of(_IIter, _IIter, _Predicate);
46
47 template<typename _IIter, typename _Predicate>
48 bool
49 none_of(_IIter, _IIter, _Predicate);
50
51 template<typename _IIter, typename _Predicate>
52 _IIter
53 find_if_not(_IIter, _IIter, _Predicate);
54 #endif
55
56 template<typename _FIter1, typename _FIter2>
57 _FIter1
58 find_end(_FIter1, _FIter1, _FIter2, _FIter2);
59
60 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
61 _FIter1
62 find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
63
64 template<typename _FIter1, typename _FIter2>
65 _FIter1
66 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
67
68 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
69 _FIter1
70 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
71
72 template<typename _FIter>
73 _FIter
74 adjacent_find(_FIter, _FIter);
75
76 template<typename _FIter, typename _BinaryPredicate>
77 _FIter
78 adjacent_find(_FIter, _FIter, _BinaryPredicate);
79
80 template<typename _IIter, typename _Tp>
81 typename iterator_traits<_IIter>::difference_type
82 count(_IIter, _IIter, const _Tp&);
83
84 template<typename _IIter, typename _Predicate>
85 typename iterator_traits<_IIter>::difference_type
86 count_if(_IIter, _IIter, _Predicate);
87
88 template<typename _IIter1, typename _IIter2>
89 pair<_IIter1, _IIter2>
90 mismatch(_IIter1, _IIter1, _IIter2);
91
92 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
93 pair<_IIter1, _IIter2>
94 mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
95
96 template<typename _IIter1, typename _IIter2>
97 bool
98 equal(_IIter1, _IIter1, _IIter2);
99
100 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
101 bool
102 equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
103
104 template<typename _FIter1, typename _FIter2>
105 _FIter1
106 search(_FIter1, _FIter1, _FIter2, _FIter2);
107
108 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
109 _FIter1
110 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
111
112 template<typename _FIter, typename _Size, typename _Tp>
113 _FIter
114 search_n(_FIter, _FIter, _Size, const _Tp&);
115
116 template<typename _FIter, typename _Size, typename _Tp,
117 typename _BinaryPredicate>
118 _FIter
119 search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
120
121 // 25.2, modifying sequence operations:
122 // 25.2.1, copy:
123 template<typename _IIter, typename _OIter>
124 _OIter
125 copy(_IIter, _IIter, _OIter);
126
127 template<typename _BIter1, typename _BIter2>
128 _BIter2
129 copy_backward (_BIter1, _BIter1, _BIter2);
130
131 // 25.2.2, swap:
132 template<typename _Tp>
133 void
134 swap(_Tp&, _Tp& b);
135
136 #ifdef __GXX_EXPERIMENTAL_CXX0X__
137 template<typename _Tp, size_t _Nm>
138 void
139 swap(_Tp (&)[_Nm], _Tp (&)[_Nm]);
140 #endif
141
142 template<typename _FIter1, typename _FIter2>
143 _FIter2
144 swap_ranges(_FIter1 first1, _FIter1, _FIter2);
145
146 template<typename _FIter1, typename _FIter2>
147 void
148 iter_swap(_FIter1, _FIter2 b);
149
150 template<typename _IIter, typename _OIter, typename _UnaryOperation>
151 _OIter
152 transform(_IIter, _IIter, _OIter, _UnaryOperation op);
153
154 template<typename _IIter1, typename _IIter2, typename _OIter,
155 typename _BinaryOperation>
156 _OIter
157 transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
158
159 template<typename _FIter, typename _Tp>
160 void
161 replace(_FIter, _FIter, const _Tp&, const _Tp&);
162
163 template<typename _FIter, typename _Predicate, typename _Tp>
164 void
165 replace_if(_FIter, _FIter, _Predicate, const _Tp&);
166
167 template<typename _IIter, typename _OIter, typename _Tp>
168 _OIter
169 replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&);
170
171 template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp>
172 _OIter
173 replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&);
174
175 template<typename _FIter, typename _Tp>
176 void
177 fill(_FIter, _FIter, const _Tp&);
178
179 template<typename _OIter, typename _Size, typename _Tp>
180 void
181 fill_n(_OIter, _Size n, const _Tp&);
182
183 template<typename _FIter, typename _Generator>
184 void
185 generate(_FIter, _FIter, _Generator);
186
187 template<typename _OIter, typename _Size, typename _Generator>
188 void
189 generate_n(_OIter, _Size, _Generator);
190
191 template<typename _FIter, typename _Tp>
192 _FIter
193 remove(_FIter, _FIter, const _Tp&);
194
195 template<typename _FIter, typename _Predicate>
196 _FIter
197 remove_if(_FIter, _FIter, _Predicate);
198
199 template<typename _IIter, typename _OIter, typename _Tp>
200 _OIter
201 remove_copy(_IIter, _IIter, _OIter, const _Tp&);
202
203 template<typename _IIter, typename _OIter, typename _Predicate>
204 _OIter
205 remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
206
207 #ifdef __GXX_EXPERIMENTAL_CXX0X__
208 template<typename _IIter, typename _OIter, typename _Predicate>
209 _OIter
210 copy_if(_IIter, _IIter, _OIter, _Predicate);
211 #endif
212
213 template<typename _FIter>
214 _FIter
215 unique(_FIter, _FIter);
216
217 template<typename _FIter, typename _BinaryPredicate>
218 _FIter
219 unique(_FIter, _FIter, _BinaryPredicate);
220
221 template<typename _IIter, typename _OIter>
222 _OIter
223 unique_copy(_IIter, _IIter, _OIter);
224
225 template<typename _IIter, typename _OIter, typename _BinaryPredicate>
226 _OIter
227 unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
228
229 template<typename _BIter>
230 void
231 reverse(_BIter, _BIter);
232
233 template<typename _BIter, typename _OIter>
234 _OIter
235 reverse_copy(_BIter, _BIter, _OIter);
236
237 template<typename _FIter>
238 void
239 rotate(_FIter, _FIter, _FIter);
240
241 template<typename _FIter, typename _OIter>
242 _OIter
243 rotate_copy (_FIter, _FIter, _FIter, _OIter);
244
245 template<typename _RAIter>
246 void
247 random_shuffle(_RAIter, _RAIter);
248
249 template<typename _RAIter, typename _Generator>
250 void
251 random_shuffle(_RAIter, _RAIter, _Generator&);
252
253 // 25.2.12, partitions:
254 template<typename _BIter, typename _Predicate>
255 _BIter
256 partition(_BIter, _BIter, _Predicate);
257
258 template<typename _BIter, typename _Predicate>
259 _BIter
260 stable_partition(_BIter, _BIter, _Predicate);
261
262 // 25.3, sorting and related operations:
263 // 25.3.1, sorting:
264 template<typename _RAIter>
265 void
266 sort(_RAIter, _RAIter);
267
268 template<typename _RAIter, typename _Compare>
269 void
270 sort(_RAIter, _RAIter, _Compare);
271
272 template<typename _RAIter>
273 void
274 stable_sort(_RAIter, _RAIter);
275
276 template<typename _RAIter, typename _Compare>
277 void
278 stable_sort(_RAIter, _RAIter, _Compare);
279
280 template<typename _RAIter>
281 void
282 partial_sort(_RAIter, _RAIter, _RAIter);
283
284 template<typename _RAIter, typename _Compare>
285 void
286 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
287
288 template<typename _IIter, typename _RAIter>
289 _RAIter
290 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
291
292 template<typename _IIter, typename _RAIter, typename _Compare>
293 _RAIter
294 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
295
296 template<typename _RAIter>
297 void
298 nth_element(_RAIter, _RAIter, _RAIter);
299
300 template<typename _RAIter, typename _Compare>
301 void
302 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
303
304 // 25.3.3, binary search:
305 template<typename _FIter, typename _Tp>
306 _FIter
307 lower_bound(_FIter, _FIter, const _Tp&);
308
309 template<typename _FIter, typename _Tp, typename _Compare>
310 _FIter
311 lower_bound(_FIter, _FIter, const _Tp&, _Compare);
312
313 template<typename _FIter, typename _Tp>
314 _FIter
315 upper_bound(_FIter, _FIter, const _Tp&);
316
317 template<typename _FIter, typename _Tp, typename _Compare>
318 _FIter
319 upper_bound(_FIter, _FIter, const _Tp&, _Compare);
320
321 template<typename _FIter, typename _Tp>
322 pair<_FIter, _FIter>
323 equal_range(_FIter, _FIter, const _Tp&);
324
325 template<typename _FIter, typename _Tp, typename _Compare>
326 pair<_FIter, _FIter>
327 equal_range(_FIter, _FIter, const _Tp&, _Compare);
328
329 template<typename _FIter, typename _Tp>
330 bool
331 binary_search(_FIter, _FIter, const _Tp&);
332
333 template<typename _FIter, typename _Tp, typename _Compare>
334 bool
335 binary_search(_FIter, _FIter, const _Tp&, _Compare);
336
337 // 25.3.4, merge:
338 template<typename _IIter1, typename _IIter2, typename _OIter>
339 _OIter
340 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
341
342 template<typename _IIter1, typename _IIter2, typename _OIter,
343 typename _Compare>
344 _OIter
345 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
346
347 template<typename _BIter>
348 void
349 inplace_merge(_BIter, _BIter, _BIter);
350
351 template<typename _BIter, typename _Compare>
352 void
353 inplace_merge(_BIter, _BIter, _BIter, _Compare);
354
355 // 25.3.5, set operations:
356 template<typename _IIter1, typename _IIter2>
357 bool
358 includes(_IIter1, _IIter1, _IIter2, _IIter2);
359
360 template<typename _IIter1, typename _IIter2, typename _Compare>
361 bool
362 includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
363
364 template<typename _IIter1, typename _IIter2, typename _OIter>
365 _OIter
366 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
367
368 template<typename _IIter1, typename _IIter2, typename _OIter,
369 typename _Compare>
370 _OIter
371 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
372
373 template<typename _IIter1, typename _IIter2, typename _OIter>
374 _OIter
375 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
376
377 template<typename _IIter1, typename _IIter2, typename _OIter,
378 typename _Compare>
379 _OIter
380 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
381
382 template<typename _IIter1, typename _IIter2, typename _OIter>
383 _OIter
384 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
385
386 template<typename _IIter1, typename _IIter2, typename _OIter,
387 typename _Compare>
388 _OIter
389 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
390
391 template<typename _IIter1, typename _IIter2, typename _OIter>
392 _OIter
393 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
394
395 template<typename _IIter1, typename _IIter2, typename _OIter,
396 typename _Compare>
397 _OIter
398 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
399 _OIter, _Compare);
400
401 // 25.3.6, heap operations:
402 template<typename _RAIter>
403 void
404 push_heap(_RAIter, _RAIter);
405
406 template<typename _RAIter, typename _Compare>
407 void
408 push_heap(_RAIter, _RAIter, _Compare);
409
410 template<typename _RAIter>
411 void
412 pop_heap(_RAIter, _RAIter);
413
414 template<typename _RAIter, typename _Compare>
415 void
416 pop_heap(_RAIter, _RAIter, _Compare);
417
418 template<typename _RAIter>
419 void
420 make_heap(_RAIter, _RAIter);
421
422 template<typename _RAIter, typename _Compare>
423 void
424 make_heap(_RAIter, _RAIter, _Compare);
425
426 template<typename _RAIter>
427 void
428 sort_heap(_RAIter, _RAIter);
429
430 template<typename _RAIter, typename _Compare>
431 void
432 sort_heap(_RAIter, _RAIter, _Compare);
433
434 #ifdef __GXX_EXPERIMENTAL_CXX0X__
435 template<typename _RAIter>
436 bool
437 is_heap(_RAIter, _RAIter);
438
439 template<typename _RAIter, typename _Compare>
440 bool
441 is_heap(_RAIter, _RAIter, _Compare);
442
443 template<typename _RAIter>
444 _RAIter
445 is_heap_until(_RAIter, _RAIter);
446
447 template<typename _RAIter, typename _Compare>
448 _RAIter
449 is_heap_until(_RAIter, _RAIter, _Compare);
450
451 template<typename _FIter>
452 bool
453 is_sorted(_FIter, _FIter);
454
455 template<typename _FIter, typename _Compare>
456 bool
457 is_sorted(_FIter, _FIter, _Compare);
458
459 template<typename _FIter>
460 _FIter
461 is_sorted_until(_FIter, _FIter);
462
463 template<typename _FIter, typename _Compare>
464 _FIter
465 is_sorted_until(_FIter, _FIter, _Compare);
466 #endif
467
468 // 25.3.7, minimum and maximum:
469 template<typename _Tp>
470 const _Tp&
471 min(const _Tp&, const _Tp&);
472
473 template<typename _Tp, typename _Compare>
474 const _Tp&
475 min(const _Tp&, const _Tp&, _Compare);
476
477 template<typename _Tp>
478 const _Tp&
479 max(const _Tp&, const _Tp&);
480
481 template<typename _Tp, typename _Compare>
482 const _Tp&
483 max(const _Tp&, const _Tp&, _Compare);
484
485 template<typename _FIter>
486 _FIter
487 min_element(_FIter, _FIter);
488
489 template<typename _FIter, typename _Compare>
490 _FIter
491 min_element(_FIter, _FIter, _Compare);
492
493 template<typename _FIter>
494 _FIter
495 max_element(_FIter, _FIter);
496
497 template<typename _FIter, typename _Compare>
498 _FIter
499 max_element(_FIter, _FIter, _Compare);
500
501 #ifdef __GXX_EXPERIMENTAL_CXX0X__
502 template<typename _Tp>
503 pair<const _Tp&, const _Tp&>
504 minmax(const _Tp&, const _Tp&);
505
506 template<typename _Tp, typename _Compare>
507 pair<const _Tp&, const _Tp&>
508 minmax(const _Tp&, const _Tp&, _Compare);
509
510 template<typename _FIter>
511 pair<_FIter, _FIter>
512 minmax_element(_FIter, _FIter);
513
514 template<typename _FIter, typename _Compare>
515 pair<_FIter, _FIter>
516 minmax_element(_FIter, _FIter, _Compare);
517 #endif
518
519 template<typename _IIter1, typename _IIter2>
520 bool
521 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
522
523 template<typename _IIter1, typename _IIter2, typename _Compare>
524 bool
525 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
526
527 // 25.3.9, permutations
528 template<typename _BIter>
529 bool
530 next_permutation(_BIter, _BIter);
531
532 template<typename _BIter, typename _Compare>
533 bool
534 next_permutation(_BIter, _BIter, _Compare);
535
536 template<typename _BIter>
537 bool
538 prev_permutation(_BIter, _BIter);
539
540 template<typename _BIter, typename _Compare>
541 bool
542 prev_permutation(_BIter, _BIter, _Compare);
543 }