]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/25_algorithms/headers/algorithm/synopsis.cc
stl_algo.h (partition_point): Add in C++0x mode.
[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
55 template<typename _IIter, typename _Predicate>
56 bool
57 is_partitioned(_IIter, _IIter, _Predicate);
58
59 template<typename _FIter, typename _Predicate>
60 _FIter
61 partition_point(_FIter, _FIter, _Predicate);
62 #endif
63
64 template<typename _FIter1, typename _FIter2>
65 _FIter1
66 find_end(_FIter1, _FIter1, _FIter2, _FIter2);
67
68 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
69 _FIter1
70 find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
71
72 template<typename _FIter1, typename _FIter2>
73 _FIter1
74 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
75
76 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
77 _FIter1
78 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
79
80 template<typename _FIter>
81 _FIter
82 adjacent_find(_FIter, _FIter);
83
84 template<typename _FIter, typename _BinaryPredicate>
85 _FIter
86 adjacent_find(_FIter, _FIter, _BinaryPredicate);
87
88 template<typename _IIter, typename _Tp>
89 typename iterator_traits<_IIter>::difference_type
90 count(_IIter, _IIter, const _Tp&);
91
92 template<typename _IIter, typename _Predicate>
93 typename iterator_traits<_IIter>::difference_type
94 count_if(_IIter, _IIter, _Predicate);
95
96 template<typename _IIter1, typename _IIter2>
97 pair<_IIter1, _IIter2>
98 mismatch(_IIter1, _IIter1, _IIter2);
99
100 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
101 pair<_IIter1, _IIter2>
102 mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
103
104 template<typename _IIter1, typename _IIter2>
105 bool
106 equal(_IIter1, _IIter1, _IIter2);
107
108 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
109 bool
110 equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
111
112 template<typename _FIter1, typename _FIter2>
113 _FIter1
114 search(_FIter1, _FIter1, _FIter2, _FIter2);
115
116 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
117 _FIter1
118 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
119
120 template<typename _FIter, typename _Size, typename _Tp>
121 _FIter
122 search_n(_FIter, _FIter, _Size, const _Tp&);
123
124 template<typename _FIter, typename _Size, typename _Tp,
125 typename _BinaryPredicate>
126 _FIter
127 search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
128
129 // 25.2, modifying sequence operations:
130 // 25.2.1, copy:
131 template<typename _IIter, typename _OIter>
132 _OIter
133 copy(_IIter, _IIter, _OIter);
134
135 template<typename _BIter1, typename _BIter2>
136 _BIter2
137 copy_backward (_BIter1, _BIter1, _BIter2);
138
139 // 25.2.2, swap:
140 template<typename _Tp>
141 void
142 swap(_Tp&, _Tp& b);
143
144 #ifdef __GXX_EXPERIMENTAL_CXX0X__
145 template<typename _Tp, size_t _Nm>
146 void
147 swap(_Tp (&)[_Nm], _Tp (&)[_Nm]);
148 #endif
149
150 template<typename _FIter1, typename _FIter2>
151 _FIter2
152 swap_ranges(_FIter1 first1, _FIter1, _FIter2);
153
154 template<typename _FIter1, typename _FIter2>
155 void
156 iter_swap(_FIter1, _FIter2 b);
157
158 template<typename _IIter, typename _OIter, typename _UnaryOperation>
159 _OIter
160 transform(_IIter, _IIter, _OIter, _UnaryOperation op);
161
162 template<typename _IIter1, typename _IIter2, typename _OIter,
163 typename _BinaryOperation>
164 _OIter
165 transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
166
167 template<typename _FIter, typename _Tp>
168 void
169 replace(_FIter, _FIter, const _Tp&, const _Tp&);
170
171 template<typename _FIter, typename _Predicate, typename _Tp>
172 void
173 replace_if(_FIter, _FIter, _Predicate, const _Tp&);
174
175 template<typename _IIter, typename _OIter, typename _Tp>
176 _OIter
177 replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&);
178
179 template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp>
180 _OIter
181 replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&);
182
183 template<typename _FIter, typename _Tp>
184 void
185 fill(_FIter, _FIter, const _Tp&);
186
187 template<typename _OIter, typename _Size, typename _Tp>
188 void
189 fill_n(_OIter, _Size n, const _Tp&);
190
191 template<typename _FIter, typename _Generator>
192 void
193 generate(_FIter, _FIter, _Generator);
194
195 template<typename _OIter, typename _Size, typename _Generator>
196 void
197 generate_n(_OIter, _Size, _Generator);
198
199 template<typename _FIter, typename _Tp>
200 _FIter
201 remove(_FIter, _FIter, const _Tp&);
202
203 template<typename _FIter, typename _Predicate>
204 _FIter
205 remove_if(_FIter, _FIter, _Predicate);
206
207 template<typename _IIter, typename _OIter, typename _Tp>
208 _OIter
209 remove_copy(_IIter, _IIter, _OIter, const _Tp&);
210
211 template<typename _IIter, typename _OIter, typename _Predicate>
212 _OIter
213 remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
214
215 #ifdef __GXX_EXPERIMENTAL_CXX0X__
216 template<typename _IIter, typename _OIter, typename _Predicate>
217 _OIter
218 copy_if(_IIter, _IIter, _OIter, _Predicate);
219
220 template<typename _IIter, typename _OIter1,
221 typename _OIter2, typename _Predicate>
222 pair<_OIter1, _OIter2>
223 partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate);
224 #endif
225
226 template<typename _FIter>
227 _FIter
228 unique(_FIter, _FIter);
229
230 template<typename _FIter, typename _BinaryPredicate>
231 _FIter
232 unique(_FIter, _FIter, _BinaryPredicate);
233
234 template<typename _IIter, typename _OIter>
235 _OIter
236 unique_copy(_IIter, _IIter, _OIter);
237
238 template<typename _IIter, typename _OIter, typename _BinaryPredicate>
239 _OIter
240 unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
241
242 template<typename _BIter>
243 void
244 reverse(_BIter, _BIter);
245
246 template<typename _BIter, typename _OIter>
247 _OIter
248 reverse_copy(_BIter, _BIter, _OIter);
249
250 template<typename _FIter>
251 void
252 rotate(_FIter, _FIter, _FIter);
253
254 template<typename _FIter, typename _OIter>
255 _OIter
256 rotate_copy (_FIter, _FIter, _FIter, _OIter);
257
258 template<typename _RAIter>
259 void
260 random_shuffle(_RAIter, _RAIter);
261
262 template<typename _RAIter, typename _Generator>
263 void
264 random_shuffle(_RAIter, _RAIter, _Generator&);
265
266 // 25.2.12, partitions:
267 template<typename _BIter, typename _Predicate>
268 _BIter
269 partition(_BIter, _BIter, _Predicate);
270
271 template<typename _BIter, typename _Predicate>
272 _BIter
273 stable_partition(_BIter, _BIter, _Predicate);
274
275 // 25.3, sorting and related operations:
276 // 25.3.1, sorting:
277 template<typename _RAIter>
278 void
279 sort(_RAIter, _RAIter);
280
281 template<typename _RAIter, typename _Compare>
282 void
283 sort(_RAIter, _RAIter, _Compare);
284
285 template<typename _RAIter>
286 void
287 stable_sort(_RAIter, _RAIter);
288
289 template<typename _RAIter, typename _Compare>
290 void
291 stable_sort(_RAIter, _RAIter, _Compare);
292
293 template<typename _RAIter>
294 void
295 partial_sort(_RAIter, _RAIter, _RAIter);
296
297 template<typename _RAIter, typename _Compare>
298 void
299 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
300
301 template<typename _IIter, typename _RAIter>
302 _RAIter
303 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
304
305 template<typename _IIter, typename _RAIter, typename _Compare>
306 _RAIter
307 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
308
309 template<typename _RAIter>
310 void
311 nth_element(_RAIter, _RAIter, _RAIter);
312
313 template<typename _RAIter, typename _Compare>
314 void
315 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
316
317 // 25.3.3, binary search:
318 template<typename _FIter, typename _Tp>
319 _FIter
320 lower_bound(_FIter, _FIter, const _Tp&);
321
322 template<typename _FIter, typename _Tp, typename _Compare>
323 _FIter
324 lower_bound(_FIter, _FIter, const _Tp&, _Compare);
325
326 template<typename _FIter, typename _Tp>
327 _FIter
328 upper_bound(_FIter, _FIter, const _Tp&);
329
330 template<typename _FIter, typename _Tp, typename _Compare>
331 _FIter
332 upper_bound(_FIter, _FIter, const _Tp&, _Compare);
333
334 template<typename _FIter, typename _Tp>
335 pair<_FIter, _FIter>
336 equal_range(_FIter, _FIter, const _Tp&);
337
338 template<typename _FIter, typename _Tp, typename _Compare>
339 pair<_FIter, _FIter>
340 equal_range(_FIter, _FIter, const _Tp&, _Compare);
341
342 template<typename _FIter, typename _Tp>
343 bool
344 binary_search(_FIter, _FIter, const _Tp&);
345
346 template<typename _FIter, typename _Tp, typename _Compare>
347 bool
348 binary_search(_FIter, _FIter, const _Tp&, _Compare);
349
350 // 25.3.4, merge:
351 template<typename _IIter1, typename _IIter2, typename _OIter>
352 _OIter
353 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
354
355 template<typename _IIter1, typename _IIter2, typename _OIter,
356 typename _Compare>
357 _OIter
358 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
359
360 template<typename _BIter>
361 void
362 inplace_merge(_BIter, _BIter, _BIter);
363
364 template<typename _BIter, typename _Compare>
365 void
366 inplace_merge(_BIter, _BIter, _BIter, _Compare);
367
368 // 25.3.5, set operations:
369 template<typename _IIter1, typename _IIter2>
370 bool
371 includes(_IIter1, _IIter1, _IIter2, _IIter2);
372
373 template<typename _IIter1, typename _IIter2, typename _Compare>
374 bool
375 includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
376
377 template<typename _IIter1, typename _IIter2, typename _OIter>
378 _OIter
379 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
380
381 template<typename _IIter1, typename _IIter2, typename _OIter,
382 typename _Compare>
383 _OIter
384 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
385
386 template<typename _IIter1, typename _IIter2, typename _OIter>
387 _OIter
388 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
389
390 template<typename _IIter1, typename _IIter2, typename _OIter,
391 typename _Compare>
392 _OIter
393 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
394
395 template<typename _IIter1, typename _IIter2, typename _OIter>
396 _OIter
397 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
398
399 template<typename _IIter1, typename _IIter2, typename _OIter,
400 typename _Compare>
401 _OIter
402 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
403
404 template<typename _IIter1, typename _IIter2, typename _OIter>
405 _OIter
406 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
407
408 template<typename _IIter1, typename _IIter2, typename _OIter,
409 typename _Compare>
410 _OIter
411 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
412 _OIter, _Compare);
413
414 // 25.3.6, heap operations:
415 template<typename _RAIter>
416 void
417 push_heap(_RAIter, _RAIter);
418
419 template<typename _RAIter, typename _Compare>
420 void
421 push_heap(_RAIter, _RAIter, _Compare);
422
423 template<typename _RAIter>
424 void
425 pop_heap(_RAIter, _RAIter);
426
427 template<typename _RAIter, typename _Compare>
428 void
429 pop_heap(_RAIter, _RAIter, _Compare);
430
431 template<typename _RAIter>
432 void
433 make_heap(_RAIter, _RAIter);
434
435 template<typename _RAIter, typename _Compare>
436 void
437 make_heap(_RAIter, _RAIter, _Compare);
438
439 template<typename _RAIter>
440 void
441 sort_heap(_RAIter, _RAIter);
442
443 template<typename _RAIter, typename _Compare>
444 void
445 sort_heap(_RAIter, _RAIter, _Compare);
446
447 #ifdef __GXX_EXPERIMENTAL_CXX0X__
448 template<typename _RAIter>
449 bool
450 is_heap(_RAIter, _RAIter);
451
452 template<typename _RAIter, typename _Compare>
453 bool
454 is_heap(_RAIter, _RAIter, _Compare);
455
456 template<typename _RAIter>
457 _RAIter
458 is_heap_until(_RAIter, _RAIter);
459
460 template<typename _RAIter, typename _Compare>
461 _RAIter
462 is_heap_until(_RAIter, _RAIter, _Compare);
463
464 template<typename _FIter>
465 bool
466 is_sorted(_FIter, _FIter);
467
468 template<typename _FIter, typename _Compare>
469 bool
470 is_sorted(_FIter, _FIter, _Compare);
471
472 template<typename _FIter>
473 _FIter
474 is_sorted_until(_FIter, _FIter);
475
476 template<typename _FIter, typename _Compare>
477 _FIter
478 is_sorted_until(_FIter, _FIter, _Compare);
479 #endif
480
481 // 25.3.7, minimum and maximum:
482 template<typename _Tp>
483 const _Tp&
484 min(const _Tp&, const _Tp&);
485
486 template<typename _Tp, typename _Compare>
487 const _Tp&
488 min(const _Tp&, const _Tp&, _Compare);
489
490 template<typename _Tp>
491 const _Tp&
492 max(const _Tp&, const _Tp&);
493
494 template<typename _Tp, typename _Compare>
495 const _Tp&
496 max(const _Tp&, const _Tp&, _Compare);
497
498 template<typename _FIter>
499 _FIter
500 min_element(_FIter, _FIter);
501
502 template<typename _FIter, typename _Compare>
503 _FIter
504 min_element(_FIter, _FIter, _Compare);
505
506 template<typename _FIter>
507 _FIter
508 max_element(_FIter, _FIter);
509
510 template<typename _FIter, typename _Compare>
511 _FIter
512 max_element(_FIter, _FIter, _Compare);
513
514 #ifdef __GXX_EXPERIMENTAL_CXX0X__
515 template<typename _Tp>
516 pair<const _Tp&, const _Tp&>
517 minmax(const _Tp&, const _Tp&);
518
519 template<typename _Tp, typename _Compare>
520 pair<const _Tp&, const _Tp&>
521 minmax(const _Tp&, const _Tp&, _Compare);
522
523 template<typename _FIter>
524 pair<_FIter, _FIter>
525 minmax_element(_FIter, _FIter);
526
527 template<typename _FIter, typename _Compare>
528 pair<_FIter, _FIter>
529 minmax_element(_FIter, _FIter, _Compare);
530 #endif
531
532 template<typename _IIter1, typename _IIter2>
533 bool
534 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
535
536 template<typename _IIter1, typename _IIter2, typename _Compare>
537 bool
538 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
539
540 // 25.3.9, permutations
541 template<typename _BIter>
542 bool
543 next_permutation(_BIter, _BIter);
544
545 template<typename _BIter, typename _Compare>
546 bool
547 next_permutation(_BIter, _BIter, _Compare);
548
549 template<typename _BIter>
550 bool
551 prev_permutation(_BIter, _BIter);
552
553 template<typename _BIter, typename _Compare>
554 bool
555 prev_permutation(_BIter, _BIter, _Compare);
556 }