136ac495dSmrg // <parallel/algorithm> Forward declarations -*- C++ -*-
236ac495dSmrg
3*8feb0f0bSmrg // Copyright (C) 2007-2020 Free Software Foundation, Inc.
436ac495dSmrg //
536ac495dSmrg // This file is part of the GNU ISO C++ Library. This library is free
636ac495dSmrg // software; you can redistribute it and/or modify it under the terms
736ac495dSmrg // of the GNU General Public License as published by the Free Software
836ac495dSmrg // Foundation; either version 3, or (at your option) any later
936ac495dSmrg // version.
1036ac495dSmrg
1136ac495dSmrg // This library is distributed in the hope that it will be useful, but
1236ac495dSmrg // WITHOUT ANY WARRANTY; without even the implied warranty of
1336ac495dSmrg // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1436ac495dSmrg // General Public License for more details.
1536ac495dSmrg
1636ac495dSmrg // Under Section 7 of GPL version 3, you are granted additional
1736ac495dSmrg // permissions described in the GCC Runtime Library Exception, version
1836ac495dSmrg // 3.1, as published by the Free Software Foundation.
1936ac495dSmrg
2036ac495dSmrg // You should have received a copy of the GNU General Public License and
2136ac495dSmrg // a copy of the GCC Runtime Library Exception along with this program;
2236ac495dSmrg // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
2336ac495dSmrg // <http://www.gnu.org/licenses/>.
2436ac495dSmrg
2536ac495dSmrg /** @file parallel/algorithmfwd.h
2636ac495dSmrg * This file is a GNU parallel extension to the Standard C++ Library.
2736ac495dSmrg */
2836ac495dSmrg
2936ac495dSmrg #ifndef _GLIBCXX_PARALLEL_ALGORITHMFWD_H
3036ac495dSmrg #define _GLIBCXX_PARALLEL_ALGORITHMFWD_H 1
3136ac495dSmrg
3236ac495dSmrg #pragma GCC system_header
3336ac495dSmrg
3436ac495dSmrg #include <parallel/tags.h>
3536ac495dSmrg #include <parallel/settings.h>
3636ac495dSmrg
_GLIBCXX_VISIBILITY(default)3736ac495dSmrg namespace std _GLIBCXX_VISIBILITY(default)
3836ac495dSmrg {
3936ac495dSmrg namespace __parallel
4036ac495dSmrg {
4136ac495dSmrg template<typename _FIter>
4236ac495dSmrg _FIter
4336ac495dSmrg adjacent_find(_FIter, _FIter);
4436ac495dSmrg
4536ac495dSmrg template<typename _FIter>
4636ac495dSmrg _FIter
4736ac495dSmrg adjacent_find(_FIter, _FIter, __gnu_parallel::sequential_tag);
4836ac495dSmrg
4936ac495dSmrg template<typename _FIter, typename _IterTag>
5036ac495dSmrg _FIter
5136ac495dSmrg __adjacent_find_switch(_FIter, _FIter, _IterTag);
5236ac495dSmrg
5336ac495dSmrg template<typename _RAIter>
5436ac495dSmrg _RAIter
5536ac495dSmrg __adjacent_find_switch(_RAIter, _RAIter, random_access_iterator_tag);
5636ac495dSmrg
5736ac495dSmrg
5836ac495dSmrg template<typename _FIter, typename _BiPredicate>
5936ac495dSmrg _FIter
6036ac495dSmrg adjacent_find(_FIter, _FIter, _BiPredicate);
6136ac495dSmrg
6236ac495dSmrg template<typename _FIter, typename _BiPredicate>
6336ac495dSmrg _FIter
6436ac495dSmrg adjacent_find(_FIter, _FIter, _BiPredicate,
6536ac495dSmrg __gnu_parallel::sequential_tag);
6636ac495dSmrg
6736ac495dSmrg template<typename _FIter, typename _BiPredicate, typename _IterTag>
6836ac495dSmrg _FIter
6936ac495dSmrg __adjacent_find_switch(_FIter, _FIter, _BiPredicate, _IterTag);
7036ac495dSmrg
7136ac495dSmrg template<typename _RAIter, typename _BiPredicate>
7236ac495dSmrg _RAIter
7336ac495dSmrg __adjacent_find_switch(_RAIter, _RAIter, _BiPredicate,
7436ac495dSmrg random_access_iterator_tag);
7536ac495dSmrg
7636ac495dSmrg
7736ac495dSmrg template<typename _IIter, typename _Tp>
7836ac495dSmrg typename iterator_traits<_IIter>::difference_type
7936ac495dSmrg count(_IIter, _IIter, const _Tp&);
8036ac495dSmrg
8136ac495dSmrg template<typename _IIter, typename _Tp>
8236ac495dSmrg typename iterator_traits<_IIter>::difference_type
8336ac495dSmrg count(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
8436ac495dSmrg
8536ac495dSmrg template<typename _IIter, typename _Tp>
8636ac495dSmrg typename iterator_traits<_IIter>::difference_type
8736ac495dSmrg count(_IIter, _IIter, const _Tp&, __gnu_parallel::_Parallelism);
8836ac495dSmrg
8936ac495dSmrg template<typename _IIter, typename _Tp, typename _IterTag>
9036ac495dSmrg typename iterator_traits<_IIter>::difference_type
9136ac495dSmrg __count_switch(_IIter, _IIter, const _Tp&, _IterTag);
9236ac495dSmrg
9336ac495dSmrg template<typename _RAIter, typename _Tp>
9436ac495dSmrg typename iterator_traits<_RAIter>::difference_type
9536ac495dSmrg __count_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag,
9636ac495dSmrg __gnu_parallel::_Parallelism __parallelism
9736ac495dSmrg = __gnu_parallel::parallel_unbalanced);
9836ac495dSmrg
9936ac495dSmrg
10036ac495dSmrg template<typename _IIter, typename _Predicate>
10136ac495dSmrg typename iterator_traits<_IIter>::difference_type
10236ac495dSmrg count_if(_IIter, _IIter, _Predicate);
10336ac495dSmrg
10436ac495dSmrg template<typename _IIter, typename _Predicate>
10536ac495dSmrg typename iterator_traits<_IIter>::difference_type
10636ac495dSmrg count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
10736ac495dSmrg
10836ac495dSmrg template<typename _IIter, typename _Predicate>
10936ac495dSmrg typename iterator_traits<_IIter>::difference_type
11036ac495dSmrg count_if(_IIter, _IIter, _Predicate, __gnu_parallel::_Parallelism);
11136ac495dSmrg
11236ac495dSmrg template<typename _IIter, typename _Predicate, typename _IterTag>
11336ac495dSmrg typename iterator_traits<_IIter>::difference_type
11436ac495dSmrg __count_if_switch(_IIter, _IIter, _Predicate, _IterTag);
11536ac495dSmrg
11636ac495dSmrg template<typename _RAIter, typename _Predicate>
11736ac495dSmrg typename iterator_traits<_RAIter>::difference_type
11836ac495dSmrg __count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag,
11936ac495dSmrg __gnu_parallel::_Parallelism __parallelism
12036ac495dSmrg = __gnu_parallel::parallel_unbalanced);
12136ac495dSmrg
12236ac495dSmrg // algobase.h
12336ac495dSmrg template<typename _IIter1, typename _IIter2>
12436ac495dSmrg bool
12536ac495dSmrg equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
12636ac495dSmrg
12736ac495dSmrg template<typename _IIter1, typename _IIter2, typename _Predicate>
12836ac495dSmrg bool
12936ac495dSmrg equal(_IIter1, _IIter1, _IIter2, _Predicate,
13036ac495dSmrg __gnu_parallel::sequential_tag);
13136ac495dSmrg
13236ac495dSmrg template<typename _IIter1, typename _IIter2>
133*8feb0f0bSmrg _GLIBCXX20_CONSTEXPR
13436ac495dSmrg bool
13536ac495dSmrg equal(_IIter1, _IIter1, _IIter2);
13636ac495dSmrg
13736ac495dSmrg template<typename _IIter1, typename _IIter2, typename _Predicate>
138*8feb0f0bSmrg _GLIBCXX20_CONSTEXPR
13936ac495dSmrg bool
14036ac495dSmrg equal(_IIter1, _IIter1, _IIter2, _Predicate);
14136ac495dSmrg
14236ac495dSmrg template<typename _IIter, typename _Tp>
14336ac495dSmrg _IIter
14436ac495dSmrg find(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
14536ac495dSmrg
14636ac495dSmrg template<typename _IIter, typename _Tp>
14736ac495dSmrg _IIter
14836ac495dSmrg find(_IIter, _IIter, const _Tp& __val);
14936ac495dSmrg
15036ac495dSmrg template<typename _IIter, typename _Tp, typename _IterTag>
15136ac495dSmrg _IIter
15236ac495dSmrg __find_switch(_IIter, _IIter, const _Tp&, _IterTag);
15336ac495dSmrg
15436ac495dSmrg template<typename _RAIter, typename _Tp>
15536ac495dSmrg _RAIter
15636ac495dSmrg __find_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag);
15736ac495dSmrg
15836ac495dSmrg template<typename _IIter, typename _Predicate>
15936ac495dSmrg _IIter
16036ac495dSmrg find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
16136ac495dSmrg
16236ac495dSmrg template<typename _IIter, typename _Predicate>
16336ac495dSmrg _IIter
16436ac495dSmrg find_if(_IIter, _IIter, _Predicate);
16536ac495dSmrg
16636ac495dSmrg template<typename _IIter, typename _Predicate, typename _IterTag>
16736ac495dSmrg _IIter
16836ac495dSmrg __find_if_switch(_IIter, _IIter, _Predicate, _IterTag);
16936ac495dSmrg
17036ac495dSmrg template<typename _RAIter, typename _Predicate>
17136ac495dSmrg _RAIter
17236ac495dSmrg __find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag);
17336ac495dSmrg
17436ac495dSmrg template<typename _IIter, typename _FIter>
17536ac495dSmrg _IIter
17636ac495dSmrg find_first_of(_IIter, _IIter, _FIter, _FIter,
17736ac495dSmrg __gnu_parallel::sequential_tag);
17836ac495dSmrg
17936ac495dSmrg template<typename _IIter, typename _FIter, typename _BiPredicate>
18036ac495dSmrg _IIter
18136ac495dSmrg find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
18236ac495dSmrg __gnu_parallel::sequential_tag);
18336ac495dSmrg
18436ac495dSmrg template<typename _IIter, typename _FIter, typename _BiPredicate>
18536ac495dSmrg _IIter
18636ac495dSmrg find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate);
18736ac495dSmrg
18836ac495dSmrg template<typename _IIter, typename _FIter>
18936ac495dSmrg _IIter
19036ac495dSmrg find_first_of(_IIter, _IIter, _FIter, _FIter);
19136ac495dSmrg
19236ac495dSmrg template<typename _IIter, typename _FIter,
19336ac495dSmrg typename _IterTag1, typename _IterTag2>
19436ac495dSmrg _IIter
19536ac495dSmrg __find_first_of_switch(
19636ac495dSmrg _IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2);
19736ac495dSmrg
19836ac495dSmrg template<typename _RAIter, typename _FIter, typename _BiPredicate,
19936ac495dSmrg typename _IterTag>
20036ac495dSmrg _RAIter
20136ac495dSmrg __find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate,
20236ac495dSmrg random_access_iterator_tag, _IterTag);
20336ac495dSmrg
20436ac495dSmrg template<typename _IIter, typename _FIter, typename _BiPredicate,
20536ac495dSmrg typename _IterTag1, typename _IterTag2>
20636ac495dSmrg _IIter
20736ac495dSmrg __find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
20836ac495dSmrg _IterTag1, _IterTag2);
20936ac495dSmrg
21036ac495dSmrg
21136ac495dSmrg template<typename _IIter, typename _Function>
21236ac495dSmrg _Function
21336ac495dSmrg for_each(_IIter, _IIter, _Function);
21436ac495dSmrg
21536ac495dSmrg template<typename _IIter, typename _Function>
21636ac495dSmrg _Function
21736ac495dSmrg for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag);
21836ac495dSmrg
21936ac495dSmrg template<typename _Iterator, typename _Function>
22036ac495dSmrg _Function
22136ac495dSmrg for_each(_Iterator, _Iterator, _Function, __gnu_parallel::_Parallelism);
22236ac495dSmrg
22336ac495dSmrg template<typename _IIter, typename _Function, typename _IterTag>
22436ac495dSmrg _Function
22536ac495dSmrg __for_each_switch(_IIter, _IIter, _Function, _IterTag);
22636ac495dSmrg
22736ac495dSmrg template<typename _RAIter, typename _Function>
22836ac495dSmrg _Function
22936ac495dSmrg __for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag,
23036ac495dSmrg __gnu_parallel::_Parallelism __parallelism
23136ac495dSmrg = __gnu_parallel::parallel_balanced);
23236ac495dSmrg
23336ac495dSmrg
23436ac495dSmrg template<typename _FIter, typename _Generator>
23536ac495dSmrg void
23636ac495dSmrg generate(_FIter, _FIter, _Generator);
23736ac495dSmrg
23836ac495dSmrg template<typename _FIter, typename _Generator>
23936ac495dSmrg void
24036ac495dSmrg generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag);
24136ac495dSmrg
24236ac495dSmrg template<typename _FIter, typename _Generator>
24336ac495dSmrg void
24436ac495dSmrg generate(_FIter, _FIter, _Generator, __gnu_parallel::_Parallelism);
24536ac495dSmrg
24636ac495dSmrg template<typename _FIter, typename _Generator, typename _IterTag>
24736ac495dSmrg void
24836ac495dSmrg __generate_switch(_FIter, _FIter, _Generator, _IterTag);
24936ac495dSmrg
25036ac495dSmrg template<typename _RAIter, typename _Generator>
25136ac495dSmrg void
25236ac495dSmrg __generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag,
25336ac495dSmrg __gnu_parallel::_Parallelism __parallelism
25436ac495dSmrg = __gnu_parallel::parallel_balanced);
25536ac495dSmrg
25636ac495dSmrg template<typename _OIter, typename _Size, typename _Generator>
25736ac495dSmrg _OIter
25836ac495dSmrg generate_n(_OIter, _Size, _Generator);
25936ac495dSmrg
26036ac495dSmrg template<typename _OIter, typename _Size, typename _Generator>
26136ac495dSmrg _OIter
26236ac495dSmrg generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag);
26336ac495dSmrg
26436ac495dSmrg template<typename _OIter, typename _Size, typename _Generator>
26536ac495dSmrg _OIter
26636ac495dSmrg generate_n(_OIter, _Size, _Generator, __gnu_parallel::_Parallelism);
26736ac495dSmrg
26836ac495dSmrg template<typename _OIter, typename _Size, typename _Generator,
26936ac495dSmrg typename _IterTag>
27036ac495dSmrg _OIter
27136ac495dSmrg __generate_n_switch(_OIter, _Size, _Generator, _IterTag);
27236ac495dSmrg
27336ac495dSmrg template<typename _RAIter, typename _Size, typename _Generator>
27436ac495dSmrg _RAIter
27536ac495dSmrg __generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag,
27636ac495dSmrg __gnu_parallel::_Parallelism __parallelism
27736ac495dSmrg = __gnu_parallel::parallel_balanced);
27836ac495dSmrg
27936ac495dSmrg template<typename _IIter1, typename _IIter2>
28036ac495dSmrg bool
28136ac495dSmrg lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2,
28236ac495dSmrg __gnu_parallel::sequential_tag);
28336ac495dSmrg
28436ac495dSmrg template<typename _IIter1, typename _IIter2, typename _Predicate>
28536ac495dSmrg bool
28636ac495dSmrg lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate,
28736ac495dSmrg __gnu_parallel::sequential_tag);
28836ac495dSmrg
28936ac495dSmrg template<typename _IIter1, typename _IIter2>
290*8feb0f0bSmrg _GLIBCXX20_CONSTEXPR
29136ac495dSmrg bool
29236ac495dSmrg lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
29336ac495dSmrg
29436ac495dSmrg template<typename _IIter1, typename _IIter2, typename _Predicate>
295*8feb0f0bSmrg _GLIBCXX20_CONSTEXPR
29636ac495dSmrg bool
29736ac495dSmrg lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate);
29836ac495dSmrg
29936ac495dSmrg template<typename _IIter1, typename _IIter2,
30036ac495dSmrg typename _Predicate, typename _IterTag1, typename _IterTag2>
30136ac495dSmrg bool
30236ac495dSmrg __lexicographical_compare_switch(_IIter1, _IIter1, _IIter2, _IIter2,
30336ac495dSmrg _Predicate, _IterTag1, _IterTag2);
30436ac495dSmrg
30536ac495dSmrg template<typename _RAIter1, typename _RAIter2, typename _Predicate>
30636ac495dSmrg bool
30736ac495dSmrg __lexicographical_compare_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
30836ac495dSmrg _Predicate, random_access_iterator_tag,
30936ac495dSmrg random_access_iterator_tag);
31036ac495dSmrg
31136ac495dSmrg // algo.h
31236ac495dSmrg template<typename _IIter1, typename _IIter2>
31336ac495dSmrg pair<_IIter1, _IIter2>
31436ac495dSmrg mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
31536ac495dSmrg
31636ac495dSmrg template<typename _IIter1, typename _IIter2, typename _Predicate>
31736ac495dSmrg pair<_IIter1, _IIter2>
31836ac495dSmrg mismatch(_IIter1, _IIter1, _IIter2, _Predicate,
31936ac495dSmrg __gnu_parallel::sequential_tag);
32036ac495dSmrg
32136ac495dSmrg template<typename _IIter1, typename _IIter2>
32236ac495dSmrg pair<_IIter1, _IIter2>
32336ac495dSmrg mismatch(_IIter1, _IIter1, _IIter2);
32436ac495dSmrg
32536ac495dSmrg template<typename _IIter1, typename _IIter2, typename _Predicate>
32636ac495dSmrg pair<_IIter1, _IIter2>
32736ac495dSmrg mismatch(_IIter1, _IIter1, _IIter2, _Predicate);
32836ac495dSmrg
32936ac495dSmrg template<typename _IIter1, typename _IIter2, typename _Predicate,
33036ac495dSmrg typename _IterTag1, typename _IterTag2>
33136ac495dSmrg pair<_IIter1, _IIter2>
33236ac495dSmrg __mismatch_switch(_IIter1, _IIter1, _IIter2, _Predicate,
33336ac495dSmrg _IterTag1, _IterTag2);
33436ac495dSmrg
33536ac495dSmrg template<typename _RAIter1, typename _RAIter2, typename _Predicate>
33636ac495dSmrg pair<_RAIter1, _RAIter2>
33736ac495dSmrg __mismatch_switch(_RAIter1, _RAIter1, _RAIter2, _Predicate,
33836ac495dSmrg random_access_iterator_tag, random_access_iterator_tag);
33936ac495dSmrg
34036ac495dSmrg template<typename _FIter1, typename _FIter2>
34136ac495dSmrg _FIter1
34236ac495dSmrg search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag);
34336ac495dSmrg
34436ac495dSmrg template<typename _FIter1, typename _FIter2>
34536ac495dSmrg _FIter1
34636ac495dSmrg search(_FIter1, _FIter1, _FIter2, _FIter2);
34736ac495dSmrg
34836ac495dSmrg template<typename _FIter1, typename _FIter2, typename _BiPredicate>
34936ac495dSmrg _FIter1
35036ac495dSmrg search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
35136ac495dSmrg __gnu_parallel::sequential_tag);
35236ac495dSmrg
35336ac495dSmrg template<typename _FIter1, typename _FIter2, typename _BiPredicate>
35436ac495dSmrg _FIter1
35536ac495dSmrg search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate);
35636ac495dSmrg
35736ac495dSmrg template<typename _RAIter1, typename _RAIter2>
35836ac495dSmrg _RAIter1
35936ac495dSmrg __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
36036ac495dSmrg random_access_iterator_tag, random_access_iterator_tag);
36136ac495dSmrg
36236ac495dSmrg template<typename _FIter1, typename _FIter2, typename _IterTag1,
36336ac495dSmrg typename _IterTag2>
36436ac495dSmrg _FIter1
36536ac495dSmrg __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2);
36636ac495dSmrg
36736ac495dSmrg template<typename _RAIter1, typename _RAIter2, typename _BiPredicate>
36836ac495dSmrg _RAIter1
36936ac495dSmrg __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _BiPredicate,
37036ac495dSmrg random_access_iterator_tag, random_access_iterator_tag);
37136ac495dSmrg
37236ac495dSmrg template<typename _FIter1, typename _FIter2, typename _BiPredicate,
37336ac495dSmrg typename _IterTag1, typename _IterTag2>
37436ac495dSmrg _FIter1
37536ac495dSmrg __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
37636ac495dSmrg _IterTag1, _IterTag2);
37736ac495dSmrg
37836ac495dSmrg template<typename _FIter, typename _Integer, typename _Tp>
37936ac495dSmrg _FIter
38036ac495dSmrg search_n(_FIter, _FIter, _Integer, const _Tp&,
38136ac495dSmrg __gnu_parallel::sequential_tag);
38236ac495dSmrg
38336ac495dSmrg template<typename _FIter, typename _Integer, typename _Tp,
38436ac495dSmrg typename _BiPredicate>
38536ac495dSmrg _FIter
38636ac495dSmrg search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate,
38736ac495dSmrg __gnu_parallel::sequential_tag);
38836ac495dSmrg
38936ac495dSmrg template<typename _FIter, typename _Integer, typename _Tp>
39036ac495dSmrg _FIter
39136ac495dSmrg search_n(_FIter, _FIter, _Integer, const _Tp&);
39236ac495dSmrg
39336ac495dSmrg template<typename _FIter, typename _Integer, typename _Tp,
39436ac495dSmrg typename _BiPredicate>
39536ac495dSmrg _FIter
39636ac495dSmrg search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate);
39736ac495dSmrg
39836ac495dSmrg template<typename _RAIter, typename _Integer, typename _Tp,
39936ac495dSmrg typename _BiPredicate>
40036ac495dSmrg _RAIter
40136ac495dSmrg __search_n_switch(_RAIter, _RAIter, _Integer, const _Tp&,
40236ac495dSmrg _BiPredicate, random_access_iterator_tag);
40336ac495dSmrg
40436ac495dSmrg template<typename _FIter, typename _Integer, typename _Tp,
40536ac495dSmrg typename _BiPredicate, typename _IterTag>
40636ac495dSmrg _FIter
40736ac495dSmrg __search_n_switch(_FIter, _FIter, _Integer, const _Tp&,
40836ac495dSmrg _BiPredicate, _IterTag);
40936ac495dSmrg
41036ac495dSmrg
41136ac495dSmrg template<typename _IIter, typename _OIter, typename _UnaryOperation>
41236ac495dSmrg _OIter
41336ac495dSmrg transform(_IIter, _IIter, _OIter, _UnaryOperation);
41436ac495dSmrg
41536ac495dSmrg template<typename _IIter, typename _OIter, typename _UnaryOperation>
41636ac495dSmrg _OIter
41736ac495dSmrg transform(_IIter, _IIter, _OIter, _UnaryOperation,
41836ac495dSmrg __gnu_parallel::sequential_tag);
41936ac495dSmrg
42036ac495dSmrg template<typename _IIter, typename _OIter, typename _UnaryOperation>
42136ac495dSmrg _OIter
42236ac495dSmrg transform(_IIter, _IIter, _OIter, _UnaryOperation,
42336ac495dSmrg __gnu_parallel::_Parallelism);
42436ac495dSmrg
42536ac495dSmrg template<typename _IIter, typename _OIter, typename _UnaryOperation,
42636ac495dSmrg typename _IterTag1, typename _IterTag2>
42736ac495dSmrg _OIter
42836ac495dSmrg __transform1_switch(_IIter, _IIter, _OIter, _UnaryOperation,
42936ac495dSmrg _IterTag1, _IterTag2);
43036ac495dSmrg
43136ac495dSmrg
43236ac495dSmrg template<typename _RAIIter, typename _RAOIter, typename _UnaryOperation>
43336ac495dSmrg _RAOIter
43436ac495dSmrg __transform1_switch(_RAIIter, _RAIIter, _RAOIter, _UnaryOperation,
43536ac495dSmrg random_access_iterator_tag, random_access_iterator_tag,
43636ac495dSmrg __gnu_parallel::_Parallelism __parallelism
43736ac495dSmrg = __gnu_parallel::parallel_balanced);
43836ac495dSmrg
43936ac495dSmrg
44036ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
44136ac495dSmrg typename _BiOperation>
44236ac495dSmrg _OIter
44336ac495dSmrg transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation);
44436ac495dSmrg
44536ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
44636ac495dSmrg typename _BiOperation>
44736ac495dSmrg _OIter
44836ac495dSmrg transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
44936ac495dSmrg __gnu_parallel::sequential_tag);
45036ac495dSmrg
45136ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
45236ac495dSmrg typename _BiOperation>
45336ac495dSmrg _OIter
45436ac495dSmrg transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
45536ac495dSmrg __gnu_parallel::_Parallelism);
45636ac495dSmrg
45736ac495dSmrg template<typename _RAIter1, typename _RAIter2, typename _RAIter3,
45836ac495dSmrg typename _BiOperation>
45936ac495dSmrg _RAIter3
46036ac495dSmrg __transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation,
46136ac495dSmrg random_access_iterator_tag, random_access_iterator_tag,
46236ac495dSmrg random_access_iterator_tag,
46336ac495dSmrg __gnu_parallel::_Parallelism __parallelism
46436ac495dSmrg = __gnu_parallel::parallel_balanced);
46536ac495dSmrg
46636ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
46736ac495dSmrg typename _BiOperation, typename _Tag1,
46836ac495dSmrg typename _Tag2, typename _Tag3>
46936ac495dSmrg _OIter
47036ac495dSmrg __transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
47136ac495dSmrg _Tag1, _Tag2, _Tag3);
47236ac495dSmrg
47336ac495dSmrg
47436ac495dSmrg template<typename _FIter, typename _Tp>
47536ac495dSmrg void
47636ac495dSmrg replace(_FIter, _FIter, const _Tp&, const _Tp&);
47736ac495dSmrg
47836ac495dSmrg template<typename _FIter, typename _Tp>
47936ac495dSmrg void
48036ac495dSmrg replace(_FIter, _FIter, const _Tp&, const _Tp&,
48136ac495dSmrg __gnu_parallel::sequential_tag);
48236ac495dSmrg
48336ac495dSmrg template<typename _FIter, typename _Tp>
48436ac495dSmrg void
48536ac495dSmrg replace(_FIter, _FIter, const _Tp&, const _Tp&,
48636ac495dSmrg __gnu_parallel::_Parallelism);
48736ac495dSmrg
48836ac495dSmrg template<typename _FIter, typename _Tp, typename _IterTag>
48936ac495dSmrg void
49036ac495dSmrg __replace_switch(_FIter, _FIter, const _Tp&, const _Tp&, _IterTag);
49136ac495dSmrg
49236ac495dSmrg template<typename _RAIter, typename _Tp>
49336ac495dSmrg void
49436ac495dSmrg __replace_switch(_RAIter, _RAIter, const _Tp&, const _Tp&,
49536ac495dSmrg random_access_iterator_tag, __gnu_parallel::_Parallelism);
49636ac495dSmrg
49736ac495dSmrg
49836ac495dSmrg template<typename _FIter, typename _Predicate, typename _Tp>
49936ac495dSmrg void
50036ac495dSmrg replace_if(_FIter, _FIter, _Predicate, const _Tp&);
50136ac495dSmrg
50236ac495dSmrg template<typename _FIter, typename _Predicate, typename _Tp>
50336ac495dSmrg void
50436ac495dSmrg replace_if(_FIter, _FIter, _Predicate, const _Tp&,
50536ac495dSmrg __gnu_parallel::sequential_tag);
50636ac495dSmrg
50736ac495dSmrg template<typename _FIter, typename _Predicate, typename _Tp>
50836ac495dSmrg void
50936ac495dSmrg replace_if(_FIter, _FIter, _Predicate, const _Tp&,
51036ac495dSmrg __gnu_parallel::_Parallelism);
51136ac495dSmrg
51236ac495dSmrg template<typename _FIter, typename _Predicate, typename _Tp,
51336ac495dSmrg typename _IterTag>
51436ac495dSmrg void
51536ac495dSmrg __replace_if_switch(_FIter, _FIter, _Predicate, const _Tp&, _IterTag);
51636ac495dSmrg
51736ac495dSmrg template<typename _RAIter, typename _Predicate, typename _Tp>
51836ac495dSmrg void
51936ac495dSmrg __replace_if_switch(_RAIter, _RAIter, _Predicate, const _Tp&,
52036ac495dSmrg random_access_iterator_tag,
52136ac495dSmrg __gnu_parallel::_Parallelism);
52236ac495dSmrg
52336ac495dSmrg
52436ac495dSmrg template<typename _FIter>
52536ac495dSmrg _FIter
52636ac495dSmrg max_element(_FIter, _FIter);
52736ac495dSmrg
52836ac495dSmrg template<typename _FIter>
52936ac495dSmrg _FIter
53036ac495dSmrg max_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
53136ac495dSmrg
53236ac495dSmrg template<typename _FIter>
53336ac495dSmrg _FIter
53436ac495dSmrg max_element(_FIter, _FIter, __gnu_parallel::_Parallelism);
53536ac495dSmrg
53636ac495dSmrg template<typename _FIter, typename _Compare>
53736ac495dSmrg _FIter
53836ac495dSmrg max_element(_FIter, _FIter, _Compare);
53936ac495dSmrg
54036ac495dSmrg template<typename _FIter, typename _Compare>
54136ac495dSmrg _FIter
54236ac495dSmrg max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
54336ac495dSmrg
54436ac495dSmrg template<typename _FIter, typename _Compare>
54536ac495dSmrg _FIter
54636ac495dSmrg max_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
54736ac495dSmrg
54836ac495dSmrg template<typename _FIter, typename _Compare, typename _IterTag>
54936ac495dSmrg _FIter
55036ac495dSmrg __max_element_switch(_FIter, _FIter, _Compare, _IterTag);
55136ac495dSmrg
55236ac495dSmrg template<typename _RAIter, typename _Compare>
55336ac495dSmrg _RAIter
55436ac495dSmrg __max_element_switch(
55536ac495dSmrg _RAIter, _RAIter, _Compare, random_access_iterator_tag,
55636ac495dSmrg __gnu_parallel::_Parallelism __parallelism
55736ac495dSmrg = __gnu_parallel::parallel_balanced);
55836ac495dSmrg
55936ac495dSmrg
56036ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter>
56136ac495dSmrg _OIter
56236ac495dSmrg merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
56336ac495dSmrg __gnu_parallel::sequential_tag);
56436ac495dSmrg
56536ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
56636ac495dSmrg typename _Compare>
56736ac495dSmrg _OIter
56836ac495dSmrg merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
56936ac495dSmrg __gnu_parallel::sequential_tag);
57036ac495dSmrg
57136ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
57236ac495dSmrg typename _Compare>
57336ac495dSmrg _OIter
57436ac495dSmrg merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
57536ac495dSmrg
57636ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter>
57736ac495dSmrg _OIter
57836ac495dSmrg merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
57936ac495dSmrg
58036ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
58136ac495dSmrg typename _Compare, typename _IterTag1, typename _IterTag2,
58236ac495dSmrg typename _IterTag3>
58336ac495dSmrg _OIter
58436ac495dSmrg __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
58536ac495dSmrg _IterTag1, _IterTag2, _IterTag3);
58636ac495dSmrg
58736ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
58836ac495dSmrg typename _Compare>
58936ac495dSmrg _OIter
59036ac495dSmrg __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
59136ac495dSmrg random_access_iterator_tag, random_access_iterator_tag,
59236ac495dSmrg random_access_iterator_tag);
59336ac495dSmrg
59436ac495dSmrg
59536ac495dSmrg template<typename _FIter>
59636ac495dSmrg _FIter
59736ac495dSmrg min_element(_FIter, _FIter);
59836ac495dSmrg
59936ac495dSmrg template<typename _FIter>
60036ac495dSmrg _FIter
60136ac495dSmrg min_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
60236ac495dSmrg
60336ac495dSmrg template<typename _FIter>
60436ac495dSmrg _FIter
60536ac495dSmrg min_element(_FIter, _FIter,
60636ac495dSmrg __gnu_parallel::_Parallelism __parallelism_tag);
60736ac495dSmrg
60836ac495dSmrg template<typename _FIter, typename _Compare>
60936ac495dSmrg _FIter
61036ac495dSmrg min_element(_FIter, _FIter, _Compare);
61136ac495dSmrg
61236ac495dSmrg template<typename _FIter, typename _Compare>
61336ac495dSmrg _FIter
61436ac495dSmrg min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
61536ac495dSmrg
61636ac495dSmrg template<typename _FIter, typename _Compare>
61736ac495dSmrg _FIter
61836ac495dSmrg min_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
61936ac495dSmrg
62036ac495dSmrg template<typename _FIter, typename _Compare, typename _IterTag>
62136ac495dSmrg _FIter
62236ac495dSmrg __min_element_switch(_FIter, _FIter, _Compare, _IterTag);
62336ac495dSmrg
62436ac495dSmrg template<typename _RAIter, typename _Compare>
62536ac495dSmrg _RAIter
62636ac495dSmrg __min_element_switch(
62736ac495dSmrg _RAIter, _RAIter, _Compare, random_access_iterator_tag,
62836ac495dSmrg __gnu_parallel::_Parallelism __parallelism
62936ac495dSmrg = __gnu_parallel::parallel_balanced);
63036ac495dSmrg
63136ac495dSmrg template<typename _RAIter>
63236ac495dSmrg void
63336ac495dSmrg nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
63436ac495dSmrg
63536ac495dSmrg template<typename _RAIter, typename _Compare>
63636ac495dSmrg void
63736ac495dSmrg nth_element(_RAIter, _RAIter, _RAIter, _Compare,
63836ac495dSmrg __gnu_parallel::sequential_tag);
63936ac495dSmrg
64036ac495dSmrg template<typename _RAIter, typename _Compare>
64136ac495dSmrg void
64236ac495dSmrg nth_element(_RAIter, _RAIter, _RAIter, _Compare);
64336ac495dSmrg
64436ac495dSmrg template<typename _RAIter>
64536ac495dSmrg void
64636ac495dSmrg nth_element(_RAIter, _RAIter, _RAIter);
64736ac495dSmrg
64836ac495dSmrg template<typename _RAIter, typename _Compare>
64936ac495dSmrg void
65036ac495dSmrg partial_sort(_RAIter, _RAIter, _RAIter, _Compare,
65136ac495dSmrg __gnu_parallel::sequential_tag);
65236ac495dSmrg
65336ac495dSmrg template<typename _RAIter>
65436ac495dSmrg void
65536ac495dSmrg partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
65636ac495dSmrg
65736ac495dSmrg template<typename _RAIter, typename _Compare>
65836ac495dSmrg void
65936ac495dSmrg partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
66036ac495dSmrg
66136ac495dSmrg template<typename _RAIter>
66236ac495dSmrg void
66336ac495dSmrg partial_sort(_RAIter, _RAIter, _RAIter);
66436ac495dSmrg
66536ac495dSmrg template<typename _FIter, typename _Predicate>
66636ac495dSmrg _FIter
66736ac495dSmrg partition(_FIter, _FIter, _Predicate, __gnu_parallel::sequential_tag);
66836ac495dSmrg
66936ac495dSmrg template<typename _FIter, typename _Predicate>
67036ac495dSmrg _FIter
67136ac495dSmrg partition(_FIter, _FIter, _Predicate);
67236ac495dSmrg
67336ac495dSmrg template<typename _FIter, typename _Predicate, typename _IterTag>
67436ac495dSmrg _FIter
67536ac495dSmrg __partition_switch(_FIter, _FIter, _Predicate, _IterTag);
67636ac495dSmrg
67736ac495dSmrg template<typename _RAIter, typename _Predicate>
67836ac495dSmrg _RAIter
67936ac495dSmrg __partition_switch(
68036ac495dSmrg _RAIter, _RAIter, _Predicate, random_access_iterator_tag);
68136ac495dSmrg
68236ac495dSmrg template<typename _RAIter>
68336ac495dSmrg void
68436ac495dSmrg random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
68536ac495dSmrg
68636ac495dSmrg template<typename _RAIter, typename _RandomNumberGenerator>
68736ac495dSmrg void
68836ac495dSmrg random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&,
68936ac495dSmrg __gnu_parallel::sequential_tag);
69036ac495dSmrg
69136ac495dSmrg template<typename _RAIter>
69236ac495dSmrg void
69336ac495dSmrg random_shuffle(_RAIter, _RAIter);
69436ac495dSmrg
69536ac495dSmrg template<typename _RAIter, typename _RandomNumberGenerator>
69636ac495dSmrg void
69736ac495dSmrg random_shuffle(_RAIter, _RAIter,
69836ac495dSmrg #if __cplusplus >= 201103L
69936ac495dSmrg _RandomNumberGenerator&&);
70036ac495dSmrg #else
70136ac495dSmrg _RandomNumberGenerator&);
70236ac495dSmrg #endif
70336ac495dSmrg
70436ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter>
70536ac495dSmrg _OIter
70636ac495dSmrg set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
70736ac495dSmrg __gnu_parallel::sequential_tag);
70836ac495dSmrg
70936ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
71036ac495dSmrg typename _Predicate>
71136ac495dSmrg _OIter
71236ac495dSmrg set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
71336ac495dSmrg __gnu_parallel::sequential_tag);
71436ac495dSmrg
71536ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter>
71636ac495dSmrg _OIter
71736ac495dSmrg set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
71836ac495dSmrg
71936ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
72036ac495dSmrg typename _Predicate>
72136ac495dSmrg _OIter
72236ac495dSmrg set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
72336ac495dSmrg
72436ac495dSmrg template<typename _IIter1, typename _IIter2, typename _Predicate,
72536ac495dSmrg typename _OIter, typename _IterTag1, typename _IterTag2,
72636ac495dSmrg typename _IterTag3>
72736ac495dSmrg _OIter
72836ac495dSmrg __set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
72936ac495dSmrg _Predicate, _IterTag1, _IterTag2, _IterTag3);
73036ac495dSmrg
73136ac495dSmrg template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
73236ac495dSmrg typename _Predicate>
73336ac495dSmrg _Output_RAIter
73436ac495dSmrg __set_union_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _Output_RAIter,
73536ac495dSmrg _Predicate, random_access_iterator_tag,
73636ac495dSmrg random_access_iterator_tag, random_access_iterator_tag);
73736ac495dSmrg
73836ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter>
73936ac495dSmrg _OIter
74036ac495dSmrg set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
74136ac495dSmrg __gnu_parallel::sequential_tag);
74236ac495dSmrg
74336ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
74436ac495dSmrg typename _Predicate>
74536ac495dSmrg _OIter
74636ac495dSmrg set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
74736ac495dSmrg __gnu_parallel::sequential_tag);
74836ac495dSmrg
74936ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter>
75036ac495dSmrg _OIter
75136ac495dSmrg set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
75236ac495dSmrg
75336ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
75436ac495dSmrg typename _Predicate>
75536ac495dSmrg _OIter
75636ac495dSmrg set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
75736ac495dSmrg
75836ac495dSmrg template<typename _IIter1, typename _IIter2, typename _Predicate,
75936ac495dSmrg typename _OIter, typename _IterTag1, typename _IterTag2,
76036ac495dSmrg typename _IterTag3>
76136ac495dSmrg _OIter
76236ac495dSmrg __set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
76336ac495dSmrg _Predicate, _IterTag1, _IterTag2, _IterTag3);
76436ac495dSmrg
76536ac495dSmrg template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
76636ac495dSmrg typename _Predicate>
76736ac495dSmrg _Output_RAIter
76836ac495dSmrg __set_intersection_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
76936ac495dSmrg _Output_RAIter, _Predicate,
77036ac495dSmrg random_access_iterator_tag,
77136ac495dSmrg random_access_iterator_tag,
77236ac495dSmrg random_access_iterator_tag);
77336ac495dSmrg
77436ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter>
77536ac495dSmrg _OIter
77636ac495dSmrg set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
77736ac495dSmrg __gnu_parallel::sequential_tag);
77836ac495dSmrg
77936ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
78036ac495dSmrg typename _Predicate>
78136ac495dSmrg _OIter
78236ac495dSmrg set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
78336ac495dSmrg _Predicate, __gnu_parallel::sequential_tag);
78436ac495dSmrg
78536ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter>
78636ac495dSmrg _OIter
78736ac495dSmrg set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
78836ac495dSmrg
78936ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
79036ac495dSmrg typename _Predicate>
79136ac495dSmrg _OIter
79236ac495dSmrg set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
79336ac495dSmrg _Predicate);
79436ac495dSmrg
79536ac495dSmrg template<typename _IIter1, typename _IIter2, typename _Predicate,
79636ac495dSmrg typename _OIter, typename _IterTag1, typename _IterTag2,
79736ac495dSmrg typename _IterTag3>
79836ac495dSmrg _OIter
79936ac495dSmrg __set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2,
80036ac495dSmrg _OIter, _Predicate, _IterTag1, _IterTag2,
80136ac495dSmrg _IterTag3);
80236ac495dSmrg
80336ac495dSmrg template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
80436ac495dSmrg typename _Predicate>
80536ac495dSmrg _Output_RAIter
80636ac495dSmrg __set_symmetric_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
80736ac495dSmrg _Output_RAIter, _Predicate,
80836ac495dSmrg random_access_iterator_tag,
80936ac495dSmrg random_access_iterator_tag,
81036ac495dSmrg random_access_iterator_tag);
81136ac495dSmrg
81236ac495dSmrg
81336ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter>
81436ac495dSmrg _OIter
81536ac495dSmrg set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
81636ac495dSmrg __gnu_parallel::sequential_tag);
81736ac495dSmrg
81836ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
81936ac495dSmrg typename _Predicate>
82036ac495dSmrg _OIter
82136ac495dSmrg set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
82236ac495dSmrg __gnu_parallel::sequential_tag);
82336ac495dSmrg
82436ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter>
82536ac495dSmrg _OIter
82636ac495dSmrg set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
82736ac495dSmrg
82836ac495dSmrg template<typename _IIter1, typename _IIter2, typename _OIter,
82936ac495dSmrg typename _Predicate>
83036ac495dSmrg _OIter
83136ac495dSmrg set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
83236ac495dSmrg
83336ac495dSmrg template<typename _IIter1, typename _IIter2, typename _Predicate,
83436ac495dSmrg typename _OIter, typename _IterTag1, typename _IterTag2,
83536ac495dSmrg typename _IterTag3>
83636ac495dSmrg _OIter
83736ac495dSmrg __set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
83836ac495dSmrg _Predicate, _IterTag1, _IterTag2, _IterTag3);
83936ac495dSmrg
84036ac495dSmrg template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
84136ac495dSmrg typename _Predicate>
84236ac495dSmrg _Output_RAIter
84336ac495dSmrg __set_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
84436ac495dSmrg _Output_RAIter, _Predicate,
84536ac495dSmrg random_access_iterator_tag,
84636ac495dSmrg random_access_iterator_tag,
84736ac495dSmrg random_access_iterator_tag);
84836ac495dSmrg
84936ac495dSmrg
85036ac495dSmrg template<typename _RAIter>
85136ac495dSmrg void
85236ac495dSmrg sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
85336ac495dSmrg
85436ac495dSmrg template<typename _RAIter, typename _Compare>
85536ac495dSmrg void
85636ac495dSmrg sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
85736ac495dSmrg
85836ac495dSmrg template<typename _RAIter>
85936ac495dSmrg void
86036ac495dSmrg sort(_RAIter, _RAIter);
86136ac495dSmrg
86236ac495dSmrg template<typename _RAIter, typename _Compare>
86336ac495dSmrg void
86436ac495dSmrg sort(_RAIter, _RAIter, _Compare);
86536ac495dSmrg
86636ac495dSmrg template<typename _RAIter>
86736ac495dSmrg void
86836ac495dSmrg stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
86936ac495dSmrg
87036ac495dSmrg template<typename _RAIter, typename _Compare>
87136ac495dSmrg void
87236ac495dSmrg stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
87336ac495dSmrg
87436ac495dSmrg template<typename _RAIter>
87536ac495dSmrg void
87636ac495dSmrg stable_sort(_RAIter, _RAIter);
87736ac495dSmrg
87836ac495dSmrg template<typename _RAIter, typename _Compare>
87936ac495dSmrg void
88036ac495dSmrg stable_sort(_RAIter, _RAIter, _Compare);
88136ac495dSmrg
88236ac495dSmrg template<typename _IIter, typename _OIter>
88336ac495dSmrg _OIter
88436ac495dSmrg unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
88536ac495dSmrg
88636ac495dSmrg template<typename _IIter, typename _OIter, typename _Predicate>
88736ac495dSmrg _OIter
88836ac495dSmrg unique_copy(_IIter, _IIter, _OIter, _Predicate,
88936ac495dSmrg __gnu_parallel::sequential_tag);
89036ac495dSmrg
89136ac495dSmrg template<typename _IIter, typename _OIter>
89236ac495dSmrg _OIter
89336ac495dSmrg unique_copy(_IIter, _IIter, _OIter);
89436ac495dSmrg
89536ac495dSmrg template<typename _IIter, typename _OIter, typename _Predicate>
89636ac495dSmrg _OIter
89736ac495dSmrg unique_copy(_IIter, _IIter, _OIter, _Predicate);
89836ac495dSmrg
89936ac495dSmrg template<typename _IIter, typename _OIter, typename _Predicate,
90036ac495dSmrg typename _IterTag1, typename _IterTag2>
90136ac495dSmrg _OIter
90236ac495dSmrg __unique_copy_switch(_IIter, _IIter, _OIter, _Predicate,
90336ac495dSmrg _IterTag1, _IterTag2);
90436ac495dSmrg
90536ac495dSmrg template<typename _RAIter, typename _RandomAccess_OIter, typename _Predicate>
90636ac495dSmrg _RandomAccess_OIter
90736ac495dSmrg __unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate,
90836ac495dSmrg random_access_iterator_tag, random_access_iterator_tag);
90936ac495dSmrg } // end namespace __parallel
91036ac495dSmrg } // end namespace std
91136ac495dSmrg
91236ac495dSmrg #endif /* _GLIBCXX_PARALLEL_ALGORITHMFWD_H */
913