]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/include/bits/algorithmfwd.h
re PR c++/49482 ([C++0x] unused parameter warning on lambda in function template)
[thirdparty/gcc.git] / libstdc++-v3 / include / bits / algorithmfwd.h
CommitLineData
c2ba9709
JS
1// <algorithm> declarations -*- C++ -*-
2
632469d0 3// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
c2ba9709
JS
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
748086b7 8// Free Software Foundation; either version 3, or (at your option)
c2ba9709
JS
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
748086b7
JJ
16// Under Section 7 of GPL version 3, you are granted additional
17// permissions described in the GCC Runtime Library Exception, version
18// 3.1, as published by the Free Software Foundation.
19
20// You should have received a copy of the GNU General Public License and
21// a copy of the GCC Runtime Library Exception along with this program;
22// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23// <http://www.gnu.org/licenses/>.
c2ba9709
JS
24
25/** @file bits/algorithmfwd.h
26 * This is an internal header file, included by other library headers.
f910786b 27 * Do not attempt to use it directly. @headername{algorithm}
c2ba9709
JS
28 */
29
c2ba9709
JS
30#ifndef _GLIBCXX_ALGORITHMFWD_H
31#define _GLIBCXX_ALGORITHMFWD_H 1
32
33#pragma GCC system_header
34
35#include <bits/c++config.h>
36#include <bits/stl_pair.h>
37#include <bits/stl_iterator_base_types.h>
1edd1a83 38#include <initializer_list>
c2ba9709 39
12ffa228
BK
40namespace std _GLIBCXX_VISIBILITY(default)
41{
42_GLIBCXX_BEGIN_NAMESPACE_VERSION
c2ba9709 43
aac2878e
BK
44 /*
45 adjacent_find
46 all_of (C++0x)
47 any_of (C++0x)
48 binary_search
49 copy
50 copy_backward
51 copy_if (C++0x)
52 copy_n (C++0x)
53 count
54 count_if
55 equal
56 equal_range
57 fill
58 fill_n
59 find
60 find_end
61 find_first_of
62 find_if
63 find_if_not (C++0x)
64 for_each
65 generate
66 generate_n
67 includes
68 inplace_merge
69 is_heap (C++0x)
70 is_heap_until (C++0x)
71 is_partitioned (C++0x)
72 is_sorted (C++0x)
73 is_sorted_until (C++0x)
74 iter_swap
75 lexicographical_compare
76 lower_bound
77 make_heap
78 max
79 max_element
80 merge
81 min
82 min_element
83 minmax (C++0x)
84 minmax_element (C++0x)
85 mismatch
86 next_permutation
87 none_of (C++0x)
88 nth_element
89 partial_sort
90 partial_sort_copy
91 partition
92 partition_copy (C++0x)
93 partition_point (C++0x)
94 pop_heap
95 prev_permutation
96 push_heap
97 random_shuffle
98 remove
99 remove_copy
100 remove_copy_if
101 remove_if
102 replace
103 replace_copy
104 replace_copy_if
105 replace_if
106 reverse
107 reverse_copy
108 rotate
109 rotate_copy
110 search
111 search_n
112 set_difference
113 set_intersection
114 set_symmetric_difference
115 set_union
247d8075 116 shuffle (C++0x)
aac2878e
BK
117 sort
118 sort_heap
119 stable_partition
120 stable_sort
121 swap
122 swap_ranges
123 transform
124 unique
125 unique_copy
126 upper_bound
127 */
128
129 /**
130 * @defgroup algorithms Algorithms
131 *
132 * Components for performing algorithmic operations. Includes
133 * non-modifying sequence, modifying (mutating) sequence, sorting,
134 * searching, merge, partition, heap, set, minima, maxima, and
135 * permutation operations.
136 */
137
138 /**
5ab3a5af 139 * @defgroup mutating_algorithms Mutating
5b9daa7e
BK
140 * @ingroup algorithms
141 */
142
143 /**
5ab3a5af 144 * @defgroup non_mutating_algorithms Non-Mutating
5b9daa7e
BK
145 * @ingroup algorithms
146 */
147
148 /**
5ab3a5af 149 * @defgroup sorting_algorithms Sorting
aac2878e 150 * @ingroup algorithms
5b9daa7e
BK
151 */
152
153 /**
5ab3a5af 154 * @defgroup set_algorithms Set Operation
5b9daa7e 155 * @ingroup sorting_algorithms
aac2878e
BK
156 *
157 * These algorithms are common set operations performed on sequences
158 * that are already sorted. The number of comparisons will be
159 * linear.
160 */
161
162 /**
5ab3a5af 163 * @defgroup binary_search_algorithms Binary Search
5b9daa7e 164 * @ingroup sorting_algorithms
aac2878e
BK
165 *
166 * These algorithms are variations of a classic binary search, and
167 * all assume that the sequence being searched is already sorted.
168 *
169 * The number of comparisons will be logarithmic (and as few as
170 * possible). The number of steps through the sequence will be
171 * logarithmic for random-access iterators (e.g., pointers), and
172 * linear otherwise.
173 *
174 * The LWG has passed Defect Report 270, which notes: <em>The
175 * proposed resolution reinterprets binary search. Instead of
176 * thinking about searching for a value in a sorted range, we view
177 * that as an important special case of a more general algorithm:
178 * searching for the partition point in a partitioned range. We
179 * also add a guarantee that the old wording did not: we ensure that
180 * the upper bound is no earlier than the lower bound, that the pair
181 * returned by equal_range is a valid range, and that the first part
182 * of that pair is the lower bound.</em>
183 *
184 * The actual effect of the first sentence is that a comparison
185 * functor passed by the user doesn't necessarily need to induce a
186 * strict weak ordering relation. Rather, it partitions the range.
187 */
188
c2ba9709
JS
189 // adjacent_find
190
688a7a07
PC
191#ifdef __GXX_EXPERIMENTAL_CXX0X__
192 template<typename _IIter, typename _Predicate>
193 bool
194 all_of(_IIter, _IIter, _Predicate);
195
196 template<typename _IIter, typename _Predicate>
197 bool
198 any_of(_IIter, _IIter, _Predicate);
199#endif
200
c2ba9709
JS
201 template<typename _FIter, typename _Tp>
202 bool
203 binary_search(_FIter, _FIter, const _Tp&);
204
205 template<typename _FIter, typename _Tp, typename _Compare>
206 bool
207 binary_search(_FIter, _FIter, const _Tp&, _Compare);
208
209 template<typename _IIter, typename _OIter>
210 _OIter
211 copy(_IIter, _IIter, _OIter);
212
213 template<typename _BIter1, typename _BIter2>
214 _BIter2
4f99f3d0 215 copy_backward(_BIter1, _BIter1, _BIter2);
c2ba9709 216
688a7a07
PC
217#ifdef __GXX_EXPERIMENTAL_CXX0X__
218 template<typename _IIter, typename _OIter, typename _Predicate>
219 _OIter
220 copy_if(_IIter, _IIter, _OIter, _Predicate);
b0371776
PC
221
222 template<typename _IIter, typename _Size, typename _OIter>
223 _OIter
224 copy_n(_IIter, _Size, _OIter);
688a7a07
PC
225#endif
226
c2ba9709
JS
227 // count
228 // count_if
229
230 template<typename _FIter, typename _Tp>
231 pair<_FIter, _FIter>
232 equal_range(_FIter, _FIter, const _Tp&);
233
234 template<typename _FIter, typename _Tp, typename _Compare>
235 pair<_FIter, _FIter>
236 equal_range(_FIter, _FIter, const _Tp&, _Compare);
237
238 template<typename _FIter, typename _Tp>
239 void
240 fill(_FIter, _FIter, const _Tp&);
241
c2ba9709
JS
242 template<typename _OIter, typename _Size, typename _Tp>
243 _OIter
244 fill_n(_OIter, _Size, const _Tp&);
245
246 // find
6f95a65a
BK
247
248 template<typename _FIter1, typename _FIter2>
249 _FIter1
250 find_end(_FIter1, _FIter1, _FIter2, _FIter2);
251
252 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
253 _FIter1
254 find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
255
c2ba9709
JS
256 // find_first_of
257 // find_if
c2ba9709 258
76cc1b70 259#ifdef __GXX_EXPERIMENTAL_CXX0X__
76cc1b70
PC
260 template<typename _IIter, typename _Predicate>
261 _IIter
262 find_if_not(_IIter, _IIter, _Predicate);
263#endif
264
688a7a07
PC
265 // for_each
266 // generate
267 // generate_n
268
c2ba9709
JS
269 template<typename _IIter1, typename _IIter2>
270 bool
271 includes(_IIter1, _IIter1, _IIter2, _IIter2);
272
273 template<typename _IIter1, typename _IIter2, typename _Compare>
274 bool
275 includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
276
277 template<typename _BIter>
278 void
279 inplace_merge(_BIter, _BIter, _BIter);
280
281 template<typename _BIter, typename _Compare>
282 void
283 inplace_merge(_BIter, _BIter, _BIter, _Compare);
284
e69f1bad
PC
285#ifdef __GXX_EXPERIMENTAL_CXX0X__
286 template<typename _RAIter>
287 bool
288 is_heap(_RAIter, _RAIter);
289
290 template<typename _RAIter, typename _Compare>
291 bool
292 is_heap(_RAIter, _RAIter, _Compare);
293
294 template<typename _RAIter>
295 _RAIter
296 is_heap_until(_RAIter, _RAIter);
297
298 template<typename _RAIter, typename _Compare>
299 _RAIter
300 is_heap_until(_RAIter, _RAIter, _Compare);
4b7ed13a 301
04dbd891
PC
302 template<typename _IIter, typename _Predicate>
303 bool
304 is_partitioned(_IIter, _IIter, _Predicate);
305
632469d0
PC
306 template<typename _FIter1, typename _FIter2>
307 bool
308 is_permutation(_FIter1, _FIter1, _FIter2);
309
310 template<typename _FIter1, typename _FIter2,
311 typename _BinaryPredicate>
312 bool
313 is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate);
314
4b7ed13a
PC
315 template<typename _FIter>
316 bool
317 is_sorted(_FIter, _FIter);
318
319 template<typename _FIter, typename _Compare>
320 bool
321 is_sorted(_FIter, _FIter, _Compare);
322
323 template<typename _FIter>
324 _FIter
325 is_sorted_until(_FIter, _FIter);
326
327 template<typename _FIter, typename _Compare>
328 _FIter
329 is_sorted_until(_FIter, _FIter, _Compare);
e69f1bad
PC
330#endif
331
c2ba9709
JS
332 template<typename _FIter1, typename _FIter2>
333 void
334 iter_swap(_FIter1, _FIter2);
335
c2ba9709
JS
336 template<typename _FIter, typename _Tp>
337 _FIter
338 lower_bound(_FIter, _FIter, const _Tp&);
339
340 template<typename _FIter, typename _Tp, typename _Compare>
341 _FIter
342 lower_bound(_FIter, _FIter, const _Tp&, _Compare);
343
344 template<typename _RAIter>
345 void
346 make_heap(_RAIter, _RAIter);
347
348 template<typename _RAIter, typename _Compare>
349 void
350 make_heap(_RAIter, _RAIter, _Compare);
351
352 template<typename _Tp>
353 const _Tp&
354 max(const _Tp&, const _Tp&);
355
356 template<typename _Tp, typename _Compare>
357 const _Tp&
358 max(const _Tp&, const _Tp&, _Compare);
359
360 // max_element
361 // merge
362
363 template<typename _Tp>
364 const _Tp&
365 min(const _Tp&, const _Tp&);
366
367 template<typename _Tp, typename _Compare>
368 const _Tp&
369 min(const _Tp&, const _Tp&, _Compare);
370
371 // min_element
f6547b68
PC
372
373#ifdef __GXX_EXPERIMENTAL_CXX0X__
374 template<typename _Tp>
375 pair<const _Tp&, const _Tp&>
376 minmax(const _Tp&, const _Tp&);
377
378 template<typename _Tp, typename _Compare>
379 pair<const _Tp&, const _Tp&>
380 minmax(const _Tp&, const _Tp&, _Compare);
381
382 template<typename _FIter>
383 pair<_FIter, _FIter>
384 minmax_element(_FIter, _FIter);
385
386 template<typename _FIter, typename _Compare>
387 pair<_FIter, _FIter>
388 minmax_element(_FIter, _FIter, _Compare);
1edd1a83
PC
389
390 template<typename _Tp>
116a365b 391 _Tp
1edd1a83
PC
392 min(initializer_list<_Tp>);
393
394 template<typename _Tp, typename _Compare>
116a365b 395 _Tp
1edd1a83
PC
396 min(initializer_list<_Tp>, _Compare);
397
398 template<typename _Tp>
116a365b 399 _Tp
1edd1a83
PC
400 max(initializer_list<_Tp>);
401
402 template<typename _Tp, typename _Compare>
116a365b 403 _Tp
1edd1a83
PC
404 max(initializer_list<_Tp>, _Compare);
405
406 template<typename _Tp>
116a365b 407 pair<_Tp, _Tp>
1edd1a83
PC
408 minmax(initializer_list<_Tp>);
409
410 template<typename _Tp, typename _Compare>
116a365b 411 pair<_Tp, _Tp>
1edd1a83 412 minmax(initializer_list<_Tp>, _Compare);
f6547b68
PC
413#endif
414
c2ba9709
JS
415 // mismatch
416
417 template<typename _BIter>
418 bool
419 next_permutation(_BIter, _BIter);
420
421 template<typename _BIter, typename _Compare>
422 bool
423 next_permutation(_BIter, _BIter, _Compare);
424
688a7a07
PC
425#ifdef __GXX_EXPERIMENTAL_CXX0X__
426 template<typename _IIter, typename _Predicate>
427 bool
428 none_of(_IIter, _IIter, _Predicate);
429#endif
430
c2ba9709
JS
431 // nth_element
432 // partial_sort
433
434 template<typename _IIter, typename _RAIter>
435 _RAIter
436 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
437
438 template<typename _IIter, typename _RAIter, typename _Compare>
439 _RAIter
440 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
441
688a7a07
PC
442 // partition
443
444#ifdef __GXX_EXPERIMENTAL_CXX0X__
445 template<typename _IIter, typename _OIter1,
446 typename _OIter2, typename _Predicate>
447 pair<_OIter1, _OIter2>
448 partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate);
d9be9bb3
PC
449
450 template<typename _FIter, typename _Predicate>
451 _FIter
452 partition_point(_FIter, _FIter, _Predicate);
688a7a07
PC
453#endif
454
c2ba9709
JS
455 template<typename _RAIter>
456 void
457 pop_heap(_RAIter, _RAIter);
458
459 template<typename _RAIter, typename _Compare>
460 void
461 pop_heap(_RAIter, _RAIter, _Compare);
462
463 template<typename _BIter>
464 bool
465 prev_permutation(_BIter, _BIter);
466
467 template<typename _BIter, typename _Compare>
468 bool
469 prev_permutation(_BIter, _BIter, _Compare);
470
471 template<typename _RAIter>
472 void
473 push_heap(_RAIter, _RAIter);
474
475 template<typename _RAIter, typename _Compare>
476 void
477 push_heap(_RAIter, _RAIter, _Compare);
478
479 // random_shuffle
480
481 template<typename _FIter, typename _Tp>
482 _FIter
483 remove(_FIter, _FIter, const _Tp&);
484
485 template<typename _FIter, typename _Predicate>
486 _FIter
487 remove_if(_FIter, _FIter, _Predicate);
488
489 template<typename _IIter, typename _OIter, typename _Tp>
490 _OIter
491 remove_copy(_IIter, _IIter, _OIter, const _Tp&);
492
493 template<typename _IIter, typename _OIter, typename _Predicate>
494 _OIter
495 remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
496
497 // replace
498
499 template<typename _IIter, typename _OIter, typename _Tp>
500 _OIter
501 replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&);
502
503 template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp>
504 _OIter
505 replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&);
506
507 // replace_if
508
509 template<typename _BIter>
510 void
511 reverse(_BIter, _BIter);
512
513 template<typename _BIter, typename _OIter>
514 _OIter
515 reverse_copy(_BIter, _BIter, _OIter);
516
517 template<typename _FIter>
518 void
519 rotate(_FIter, _FIter, _FIter);
520
521 template<typename _FIter, typename _OIter>
522 _OIter
4f99f3d0 523 rotate_copy(_FIter, _FIter, _FIter, _OIter);
c2ba9709
JS
524
525 // search
526 // search_n
527 // set_difference
528 // set_intersection
529 // set_symmetric_difference
530 // set_union
531
247d8075
PC
532#if defined(__GXX_EXPERIMENTAL_CXX0X__) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
533 template<typename _RAIter, typename _UGenerator>
534 void
633e8e19 535 shuffle(_RAIter, _RAIter, _UGenerator&&);
247d8075
PC
536#endif
537
c2ba9709
JS
538 template<typename _RAIter>
539 void
540 sort_heap(_RAIter, _RAIter);
541
542 template<typename _RAIter, typename _Compare>
543 void
544 sort_heap(_RAIter, _RAIter, _Compare);
545
546 template<typename _BIter, typename _Predicate>
547 _BIter
548 stable_partition(_BIter, _BIter, _Predicate);
549
550 template<typename _Tp>
551 void
173f26ae
PC
552 swap(_Tp&, _Tp&)
553#ifdef __GXX_EXPERIMENTAL_CXX0X__
6f59ea25
PC
554 noexcept(__and_<is_nothrow_move_constructible<_Tp>,
555 is_nothrow_move_assignable<_Tp>>::value)
173f26ae
PC
556#endif
557 ;
c2ba9709 558
caa8b3c6
PC
559 template<typename _Tp, size_t _Nm>
560 void
561 swap(_Tp (&)[_Nm], _Tp (&)[_Nm]);
562
c2ba9709
JS
563 template<typename _FIter1, typename _FIter2>
564 _FIter2
4f99f3d0 565 swap_ranges(_FIter1, _FIter1, _FIter2);
c2ba9709
JS
566
567 // transform
568
569 template<typename _FIter>
570 _FIter
571 unique(_FIter, _FIter);
572
573 template<typename _FIter, typename _BinaryPredicate>
574 _FIter
575 unique(_FIter, _FIter, _BinaryPredicate);
576
577 // unique_copy
578
579 template<typename _FIter, typename _Tp>
580 _FIter
581 upper_bound(_FIter, _FIter, const _Tp&);
582
583 template<typename _FIter, typename _Tp, typename _Compare>
584 _FIter
585 upper_bound(_FIter, _FIter, const _Tp&, _Compare);
586
12ffa228 587_GLIBCXX_END_NAMESPACE_VERSION
c2ba9709 588
12ffa228 589_GLIBCXX_BEGIN_NAMESPACE_ALGO
c2ba9709
JS
590
591 template<typename _FIter>
592 _FIter
593 adjacent_find(_FIter, _FIter);
594
595 template<typename _FIter, typename _BinaryPredicate>
596 _FIter
597 adjacent_find(_FIter, _FIter, _BinaryPredicate);
598
599 template<typename _IIter, typename _Tp>
600 typename iterator_traits<_IIter>::difference_type
601 count(_IIter, _IIter, const _Tp&);
602
603 template<typename _IIter, typename _Predicate>
604 typename iterator_traits<_IIter>::difference_type
605 count_if(_IIter, _IIter, _Predicate);
606
607 template<typename _IIter1, typename _IIter2>
608 bool
609 equal(_IIter1, _IIter1, _IIter2);
610
611 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
612 bool
613 equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
614
615 template<typename _IIter, typename _Tp>
616 _IIter
617 find(_IIter, _IIter, const _Tp&);
618
c2ba9709
JS
619 template<typename _FIter1, typename _FIter2>
620 _FIter1
621 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
622
623 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
624 _FIter1
625 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
626
627 template<typename _IIter, typename _Predicate>
76cc1b70 628 _IIter
c2ba9709
JS
629 find_if(_IIter, _IIter, _Predicate);
630
631 template<typename _IIter, typename _Funct>
632 _Funct
633 for_each(_IIter, _IIter, _Funct);
634
635 template<typename _FIter, typename _Generator>
636 void
637 generate(_FIter, _FIter, _Generator);
638
639 template<typename _OIter, typename _Size, typename _Generator>
4f99f3d0 640 _OIter
c2ba9709
JS
641 generate_n(_OIter, _Size, _Generator);
642
643 template<typename _IIter1, typename _IIter2>
644 bool
645 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
646
647 template<typename _IIter1, typename _IIter2, typename _Compare>
648 bool
649 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
650
651 template<typename _FIter>
652 _FIter
653 max_element(_FIter, _FIter);
654
655 template<typename _FIter, typename _Compare>
656 _FIter
657 max_element(_FIter, _FIter, _Compare);
658
659 template<typename _IIter1, typename _IIter2, typename _OIter>
660 _OIter
661 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
662
663 template<typename _IIter1, typename _IIter2, typename _OIter,
664 typename _Compare>
665 _OIter
666 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
667
668 template<typename _FIter>
669 _FIter
670 min_element(_FIter, _FIter);
671
672 template<typename _FIter, typename _Compare>
673 _FIter
674 min_element(_FIter, _FIter, _Compare);
675
676 template<typename _IIter1, typename _IIter2>
677 pair<_IIter1, _IIter2>
678 mismatch(_IIter1, _IIter1, _IIter2);
679
680 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
681 pair<_IIter1, _IIter2>
682 mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
683
684 template<typename _RAIter>
685 void
686 nth_element(_RAIter, _RAIter, _RAIter);
687
688 template<typename _RAIter, typename _Compare>
689 void
690 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
691
692 template<typename _RAIter>
693 void
694 partial_sort(_RAIter, _RAIter, _RAIter);
695
696 template<typename _RAIter, typename _Compare>
697 void
698 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
699
700 template<typename _BIter, typename _Predicate>
701 _BIter
702 partition(_BIter, _BIter, _Predicate);
703
704 template<typename _RAIter>
705 void
706 random_shuffle(_RAIter, _RAIter);
707
708 template<typename _RAIter, typename _Generator>
709 void
247d8075
PC
710 random_shuffle(_RAIter, _RAIter,
711#ifdef __GXX_EXPERIMENTAL_CXX0X__
712 _Generator&&);
713#else
714 _Generator&);
715#endif
c2ba9709
JS
716
717 template<typename _FIter, typename _Tp>
718 void
719 replace(_FIter, _FIter, const _Tp&, const _Tp&);
720
721 template<typename _FIter, typename _Predicate, typename _Tp>
722 void
723 replace_if(_FIter, _FIter, _Predicate, const _Tp&);
724
725 template<typename _FIter1, typename _FIter2>
726 _FIter1
727 search(_FIter1, _FIter1, _FIter2, _FIter2);
728
729 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
730 _FIter1
731 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
732
733 template<typename _FIter, typename _Size, typename _Tp>
734 _FIter
735 search_n(_FIter, _FIter, _Size, const _Tp&);
736
737 template<typename _FIter, typename _Size, typename _Tp,
738 typename _BinaryPredicate>
739 _FIter
740 search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
741
742 template<typename _IIter1, typename _IIter2, typename _OIter>
743 _OIter
744 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
745
746 template<typename _IIter1, typename _IIter2, typename _OIter,
747 typename _Compare>
748 _OIter
749 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
750
751 template<typename _IIter1, typename _IIter2, typename _OIter>
752 _OIter
753 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
754
755 template<typename _IIter1, typename _IIter2, typename _OIter,
756 typename _Compare>
757 _OIter
758 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
759
760 template<typename _IIter1, typename _IIter2, typename _OIter>
761 _OIter
762 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
763
764 template<typename _IIter1, typename _IIter2, typename _OIter,
765 typename _Compare>
766 _OIter
767 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
768 _OIter, _Compare);
769
770 template<typename _IIter1, typename _IIter2, typename _OIter>
771 _OIter
772 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
773
774 template<typename _IIter1, typename _IIter2, typename _OIter,
775 typename _Compare>
776 _OIter
777 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
778
779 template<typename _RAIter>
780 void
781 sort(_RAIter, _RAIter);
782
783 template<typename _RAIter, typename _Compare>
784 void
785 sort(_RAIter, _RAIter, _Compare);
786
787 template<typename _RAIter>
788 void
789 stable_sort(_RAIter, _RAIter);
790
791 template<typename _RAIter, typename _Compare>
792 void
793 stable_sort(_RAIter, _RAIter, _Compare);
794
795 template<typename _IIter, typename _OIter, typename _UnaryOperation>
796 _OIter
797 transform(_IIter, _IIter, _OIter, _UnaryOperation);
798
799 template<typename _IIter1, typename _IIter2, typename _OIter,
800 typename _BinaryOperation>
801 _OIter
802 transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
803
804 template<typename _IIter, typename _OIter>
805 _OIter
806 unique_copy(_IIter, _IIter, _OIter);
807
808 template<typename _IIter, typename _OIter, typename _BinaryPredicate>
809 _OIter
810 unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
811
12ffa228
BK
812_GLIBCXX_END_NAMESPACE_ALGO
813} // namespace std
c2ba9709 814
7c3e9502 815#ifdef _GLIBCXX_PARALLEL
c2ba9709
JS
816# include <parallel/algorithmfwd.h>
817#endif
818
819#endif
820