• 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-2011.09/arm-none-eabi/include/c++/4.6.1/bits/
1// <algorithm> declarations  -*- C++ -*-
2
3// Copyright (C) 2007, 2008, 2009, 2010, 2011 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#include <initializer_list>
39
40namespace std _GLIBCXX_VISIBILITY(default)
41{
42_GLIBCXX_BEGIN_NAMESPACE_VERSION
43
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
116    shuffle (C++0x)
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  /**
139   * @defgroup mutating_algorithms Mutating
140   * @ingroup algorithms
141   */
142
143  /**
144   * @defgroup non_mutating_algorithms Non-Mutating
145   * @ingroup algorithms
146   */
147
148  /**
149   * @defgroup sorting_algorithms Sorting
150   * @ingroup algorithms
151   */
152
153  /**
154   * @defgroup set_algorithms Set Operation
155   * @ingroup sorting_algorithms
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  /**
163   * @defgroup binary_search_algorithms Binary Search
164   * @ingroup sorting_algorithms
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
189  // adjacent_find
190
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
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
215    copy_backward(_BIter1, _BIter1, _BIter2);
216
217#ifdef __GXX_EXPERIMENTAL_CXX0X__
218  template<typename _IIter, typename _OIter, typename _Predicate>
219    _OIter
220    copy_if(_IIter, _IIter, _OIter, _Predicate);
221
222  template<typename _IIter, typename _Size, typename _OIter>
223    _OIter
224    copy_n(_IIter, _Size, _OIter);
225#endif
226
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
242  template<typename _OIter, typename _Size, typename _Tp>
243    _OIter
244    fill_n(_OIter, _Size, const _Tp&);
245
246  // find
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
256  // find_first_of
257  // find_if
258
259#ifdef __GXX_EXPERIMENTAL_CXX0X__
260  template<typename _IIter, typename _Predicate>
261    _IIter
262    find_if_not(_IIter, _IIter, _Predicate);
263#endif
264
265  // for_each
266  // generate
267  // generate_n
268
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
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);
301
302  template<typename _IIter, typename _Predicate>
303    bool
304    is_partitioned(_IIter, _IIter, _Predicate);
305
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
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);
330#endif
331
332  template<typename _FIter1, typename _FIter2>
333    void
334    iter_swap(_FIter1, _FIter2);
335
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
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);
389
390  template<typename _Tp>
391    _Tp
392    min(initializer_list<_Tp>);
393
394  template<typename _Tp, typename _Compare>
395    _Tp
396    min(initializer_list<_Tp>, _Compare);
397
398  template<typename _Tp>
399    _Tp
400    max(initializer_list<_Tp>);
401
402  template<typename _Tp, typename _Compare>
403    _Tp
404    max(initializer_list<_Tp>, _Compare);
405
406  template<typename _Tp>
407    pair<_Tp, _Tp>
408    minmax(initializer_list<_Tp>);
409
410  template<typename _Tp, typename _Compare>
411    pair<_Tp, _Tp>
412    minmax(initializer_list<_Tp>, _Compare);
413#endif
414
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
425#ifdef __GXX_EXPERIMENTAL_CXX0X__
426  template<typename _IIter, typename _Predicate>
427    bool
428    none_of(_IIter, _IIter, _Predicate);
429#endif
430
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
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);
449
450  template<typename _FIter, typename _Predicate>
451    _FIter
452    partition_point(_FIter, _FIter, _Predicate);
453#endif
454
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
523    rotate_copy(_FIter, _FIter, _FIter, _OIter);
524
525  // search
526  // search_n
527  // set_difference
528  // set_intersection
529  // set_symmetric_difference
530  // set_union
531
532#if defined(__GXX_EXPERIMENTAL_CXX0X__) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
533  template<typename _RAIter, typename _UGenerator>
534    void
535    shuffle(_RAIter, _RAIter, _UGenerator&&);
536#endif
537
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
552    swap(_Tp&, _Tp&);
553
554  template<typename _Tp, size_t _Nm>
555    void
556    swap(_Tp (&)[_Nm], _Tp (&)[_Nm]);
557
558  template<typename _FIter1, typename _FIter2>
559    _FIter2
560    swap_ranges(_FIter1, _FIter1, _FIter2);
561
562  // transform
563
564  template<typename _FIter>
565    _FIter
566    unique(_FIter, _FIter);
567
568  template<typename _FIter, typename _BinaryPredicate>
569    _FIter
570    unique(_FIter, _FIter, _BinaryPredicate);
571
572  // unique_copy
573
574  template<typename _FIter, typename _Tp>
575    _FIter
576    upper_bound(_FIter, _FIter, const _Tp&);
577
578  template<typename _FIter, typename _Tp, typename _Compare>
579    _FIter
580    upper_bound(_FIter, _FIter, const _Tp&, _Compare);
581
582_GLIBCXX_END_NAMESPACE_VERSION
583
584_GLIBCXX_BEGIN_NAMESPACE_ALGO
585
586  template<typename _FIter>
587    _FIter
588    adjacent_find(_FIter, _FIter);
589
590  template<typename _FIter, typename _BinaryPredicate>
591    _FIter
592    adjacent_find(_FIter, _FIter, _BinaryPredicate);
593
594  template<typename _IIter, typename _Tp>
595    typename iterator_traits<_IIter>::difference_type
596    count(_IIter, _IIter, const _Tp&);
597
598  template<typename _IIter, typename _Predicate>
599    typename iterator_traits<_IIter>::difference_type
600    count_if(_IIter, _IIter, _Predicate);
601
602  template<typename _IIter1, typename _IIter2>
603    bool
604    equal(_IIter1, _IIter1, _IIter2);
605
606  template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
607    bool
608    equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
609
610  template<typename _IIter, typename _Tp>
611    _IIter
612    find(_IIter, _IIter, const _Tp&);
613
614  template<typename _FIter1, typename _FIter2>
615    _FIter1
616    find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
617
618  template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
619    _FIter1
620    find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
621
622  template<typename _IIter, typename _Predicate>
623    _IIter
624    find_if(_IIter, _IIter, _Predicate);
625
626  template<typename _IIter, typename _Funct>
627    _Funct
628    for_each(_IIter, _IIter, _Funct);
629
630  template<typename _FIter, typename _Generator>
631    void
632    generate(_FIter, _FIter, _Generator);
633
634  template<typename _OIter, typename _Size, typename _Generator>
635    _OIter
636    generate_n(_OIter, _Size, _Generator);
637
638  template<typename _IIter1, typename _IIter2>
639    bool
640    lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
641
642  template<typename _IIter1, typename _IIter2, typename _Compare>
643    bool
644    lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
645
646  template<typename _FIter>
647    _FIter
648    max_element(_FIter, _FIter);
649
650  template<typename _FIter, typename _Compare>
651    _FIter
652    max_element(_FIter, _FIter, _Compare);
653
654  template<typename _IIter1, typename _IIter2, typename _OIter>
655    _OIter
656    merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
657
658  template<typename _IIter1, typename _IIter2, typename _OIter,
659	   typename _Compare>
660    _OIter
661    merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
662
663  template<typename _FIter>
664    _FIter
665    min_element(_FIter, _FIter);
666
667  template<typename _FIter, typename _Compare>
668    _FIter
669    min_element(_FIter, _FIter, _Compare);
670
671  template<typename _IIter1, typename _IIter2>
672    pair<_IIter1, _IIter2>
673    mismatch(_IIter1, _IIter1, _IIter2);
674
675  template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
676    pair<_IIter1, _IIter2>
677    mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
678
679  template<typename _RAIter>
680    void
681    nth_element(_RAIter, _RAIter, _RAIter);
682
683  template<typename _RAIter, typename _Compare>
684    void
685    nth_element(_RAIter, _RAIter, _RAIter, _Compare);
686
687  template<typename _RAIter>
688    void
689    partial_sort(_RAIter, _RAIter, _RAIter);
690
691  template<typename _RAIter, typename _Compare>
692    void
693    partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
694
695  template<typename _BIter, typename _Predicate>
696    _BIter
697    partition(_BIter, _BIter, _Predicate);
698
699  template<typename _RAIter>
700    void
701    random_shuffle(_RAIter, _RAIter);
702
703  template<typename _RAIter, typename _Generator>
704    void
705    random_shuffle(_RAIter, _RAIter,
706#ifdef __GXX_EXPERIMENTAL_CXX0X__
707		   _Generator&&);
708#else
709		   _Generator&);
710#endif
711
712  template<typename _FIter, typename _Tp>
713    void
714    replace(_FIter, _FIter, const _Tp&, const _Tp&);
715
716  template<typename _FIter, typename _Predicate, typename _Tp>
717    void
718    replace_if(_FIter, _FIter, _Predicate, const _Tp&);
719
720  template<typename _FIter1, typename _FIter2>
721    _FIter1
722    search(_FIter1, _FIter1, _FIter2, _FIter2);
723
724  template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
725    _FIter1
726    search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
727
728  template<typename _FIter, typename _Size, typename _Tp>
729    _FIter
730    search_n(_FIter, _FIter, _Size, const _Tp&);
731
732  template<typename _FIter, typename _Size, typename _Tp,
733	   typename _BinaryPredicate>
734    _FIter
735    search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
736
737  template<typename _IIter1, typename _IIter2, typename _OIter>
738    _OIter
739    set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
740
741  template<typename _IIter1, typename _IIter2, typename _OIter,
742	   typename _Compare>
743    _OIter
744    set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
745
746  template<typename _IIter1, typename _IIter2, typename _OIter>
747    _OIter
748    set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
749
750  template<typename _IIter1, typename _IIter2, typename _OIter,
751	   typename _Compare>
752    _OIter
753    set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
754
755  template<typename _IIter1, typename _IIter2, typename _OIter>
756    _OIter
757    set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
758
759  template<typename _IIter1, typename _IIter2, typename _OIter,
760	   typename _Compare>
761    _OIter
762    set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
763			     _OIter, _Compare);
764
765  template<typename _IIter1, typename _IIter2, typename _OIter>
766    _OIter
767    set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
768
769  template<typename _IIter1, typename _IIter2, typename _OIter,
770	   typename _Compare>
771    _OIter
772    set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
773
774  template<typename _RAIter>
775    void
776    sort(_RAIter, _RAIter);
777
778  template<typename _RAIter, typename _Compare>
779    void
780    sort(_RAIter, _RAIter, _Compare);
781
782  template<typename _RAIter>
783    void
784    stable_sort(_RAIter, _RAIter);
785
786  template<typename _RAIter, typename _Compare>
787    void
788    stable_sort(_RAIter, _RAIter, _Compare);
789
790  template<typename _IIter, typename _OIter, typename _UnaryOperation>
791    _OIter
792    transform(_IIter, _IIter, _OIter, _UnaryOperation);
793
794  template<typename _IIter1, typename _IIter2, typename _OIter,
795	   typename _BinaryOperation>
796    _OIter
797    transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
798
799  template<typename _IIter, typename _OIter>
800    _OIter
801    unique_copy(_IIter, _IIter, _OIter);
802
803  template<typename _IIter, typename _OIter, typename _BinaryPredicate>
804    _OIter
805    unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
806
807_GLIBCXX_END_NAMESPACE_ALGO
808} // namespace std
809
810#ifdef _GLIBCXX_PARALLEL
811# include <parallel/algorithmfwd.h>
812#endif
813
814#endif
815
816