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