libstdc++
parallel/algorithmfwd.h
Go to the documentation of this file.
1 // <algorithm> parallel extensions -*- C++ -*-
2 
3 // Copyright (C) 2007, 2008, 2009, 2010 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 terms
7 // of the GNU General Public License as published by the Free Software
8 // Foundation; either version 3, or (at your option) any later
9 // version.
10 
11 // This library is distributed in the hope that it will be useful, but
12 // WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // 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 parallel/algorithmfwd.h
26  * This file is a GNU parallel extension to the Standard C++ Library.
27  */
28 
29 #ifndef _GLIBCXX_PARALLEL_ALGORITHMFWD_H
30 #define _GLIBCXX_PARALLEL_ALGORITHMFWD_H 1
31 
32 #pragma GCC system_header
33 
34 #include <parallel/tags.h>
35 #include <parallel/settings.h>
36 
37 namespace std _GLIBCXX_VISIBILITY(default)
38 {
39 namespace __parallel
40 {
41  template<typename _FIter>
42  _FIter
43  adjacent_find(_FIter, _FIter);
44 
45  template<typename _FIter>
46  _FIter
47  adjacent_find(_FIter, _FIter, __gnu_parallel::sequential_tag);
48 
49  template<typename _FIter, typename _IterTag>
50  _FIter
51  __adjacent_find_switch(_FIter, _FIter, _IterTag);
52 
53  template<typename _RAIter>
54  _RAIter
55  __adjacent_find_switch(_RAIter, _RAIter, random_access_iterator_tag);
56 
57 
58  template<typename _FIter, typename _BiPredicate>
59  _FIter
60  adjacent_find(_FIter, _FIter, _BiPredicate);
61 
62  template<typename _FIter, typename _BiPredicate>
63  _FIter
64  adjacent_find(_FIter, _FIter, _BiPredicate,
66 
67  template<typename _FIter, typename _BiPredicate, typename _IterTag>
68  _FIter
69  __adjacent_find_switch(_FIter, _FIter, _BiPredicate, _IterTag);
70 
71  template<typename _RAIter, typename _BiPredicate>
72  _RAIter
73  __adjacent_find_switch(_RAIter, _RAIter, _BiPredicate,
74  random_access_iterator_tag);
75 
76 
77  template<typename _IIter, typename _Tp>
78  typename iterator_traits<_IIter>::difference_type
79  count(_IIter, _IIter, const _Tp&);
80 
81  template<typename _IIter, typename _Tp>
82  typename iterator_traits<_IIter>::difference_type
83  count(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
84 
85  template<typename _IIter, typename _Tp>
86  typename iterator_traits<_IIter>::difference_type
87  count(_IIter, _IIter, const _Tp&, __gnu_parallel::_Parallelism);
88 
89  template<typename _IIter, typename _Tp, typename _IterTag>
90  typename iterator_traits<_IIter>::difference_type
91  __count_switch(_IIter, _IIter, const _Tp&, _IterTag);
92 
93  template<typename _RAIter, typename _Tp>
94  typename iterator_traits<_RAIter>::difference_type
95  __count_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag,
96  __gnu_parallel::_Parallelism __parallelism
98 
99 
100  template<typename _IIter, typename _Predicate>
101  typename iterator_traits<_IIter>::difference_type
102  count_if(_IIter, _IIter, _Predicate);
103 
104  template<typename _IIter, typename _Predicate>
105  typename iterator_traits<_IIter>::difference_type
106  count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
107 
108  template<typename _IIter, typename _Predicate>
109  typename iterator_traits<_IIter>::difference_type
110  count_if(_IIter, _IIter, _Predicate, __gnu_parallel::_Parallelism);
111 
112  template<typename _IIter, typename _Predicate, typename _IterTag>
113  typename iterator_traits<_IIter>::difference_type
114  __count_if_switch(_IIter, _IIter, _Predicate, _IterTag);
115 
116  template<typename _RAIter, typename _Predicate>
117  typename iterator_traits<_RAIter>::difference_type
118  __count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag,
119  __gnu_parallel::_Parallelism __parallelism
121 
122  // algobase.h
123  template<typename _IIter1, typename _IIter2>
124  bool
125  equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
126 
127  template<typename _IIter1, typename _IIter2, typename _Predicate>
128  bool
129  equal(_IIter1, _IIter1, _IIter2, _Predicate,
131 
132  template<typename _IIter1, typename _IIter2>
133  bool
134  equal(_IIter1, _IIter1, _IIter2);
135 
136  template<typename _IIter1, typename _IIter2, typename _Predicate>
137  bool
138  equal(_IIter1, _IIter1, _IIter2, _Predicate);
139 
140  template<typename _IIter, typename _Tp>
141  _IIter
142  find(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
143 
144  template<typename _IIter, typename _Tp>
145  _IIter
146  find(_IIter, _IIter, const _Tp& __val);
147 
148  template<typename _IIter, typename _Tp, typename _IterTag>
149  _IIter
150  __find_switch(_IIter, _IIter, const _Tp&, _IterTag);
151 
152  template<typename _RAIter, typename _Tp>
153  _RAIter
154  __find_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag);
155 
156  template<typename _IIter, typename _Predicate>
157  _IIter
158  find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
159 
160  template<typename _IIter, typename _Predicate>
161  _IIter
162  find_if(_IIter, _IIter, _Predicate);
163 
164  template<typename _IIter, typename _Predicate, typename _IterTag>
165  _IIter
166  __find_if_switch(_IIter, _IIter, _Predicate, _IterTag);
167 
168  template<typename _RAIter, typename _Predicate>
169  _RAIter
170  __find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag);
171 
172  template<typename _IIter, typename _FIter>
173  _IIter
174  find_first_of(_IIter, _IIter, _FIter, _FIter,
176 
177  template<typename _IIter, typename _FIter, typename _BiPredicate>
178  _IIter
179  find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
181 
182  template<typename _IIter, typename _FIter, typename _BiPredicate>
183  _IIter
184  find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate);
185 
186  template<typename _IIter, typename _FIter>
187  _IIter
188  find_first_of(_IIter, _IIter, _FIter, _FIter);
189 
190  template<typename _IIter, typename _FIter,
191  typename _IterTag1, typename _IterTag2>
192  _IIter
193  __find_first_of_switch(
194  _IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2);
195 
196  template<typename _RAIter, typename _FIter, typename _BiPredicate,
197  typename _IterTag>
198  _RAIter
199  __find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate,
200  random_access_iterator_tag, _IterTag);
201 
202  template<typename _IIter, typename _FIter, typename _BiPredicate,
203  typename _IterTag1, typename _IterTag2>
204  _IIter
205  __find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
206  _IterTag1, _IterTag2);
207 
208 
209  template<typename _IIter, typename _Function>
210  _Function
211  for_each(_IIter, _IIter, _Function);
212 
213  template<typename _IIter, typename _Function>
214  _Function
215  for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag);
216 
217  template<typename _Iterator, typename _Function>
218  _Function
219  for_each(_Iterator, _Iterator, _Function, __gnu_parallel::_Parallelism);
220 
221  template<typename _IIter, typename _Function, typename _IterTag>
222  _Function
223  __for_each_switch(_IIter, _IIter, _Function, _IterTag);
224 
225  template<typename _RAIter, typename _Function>
226  _Function
227  __for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag,
228  __gnu_parallel::_Parallelism __parallelism
230 
231 
232  template<typename _FIter, typename _Generator>
233  void
234  generate(_FIter, _FIter, _Generator);
235 
236  template<typename _FIter, typename _Generator>
237  void
238  generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag);
239 
240  template<typename _FIter, typename _Generator>
241  void
242  generate(_FIter, _FIter, _Generator, __gnu_parallel::_Parallelism);
243 
244  template<typename _FIter, typename _Generator, typename _IterTag>
245  void
246  __generate_switch(_FIter, _FIter, _Generator, _IterTag);
247 
248  template<typename _RAIter, typename _Generator>
249  void
250  __generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag,
251  __gnu_parallel::_Parallelism __parallelism
253 
254  template<typename _OIter, typename _Size, typename _Generator>
255  _OIter
256  generate_n(_OIter, _Size, _Generator);
257 
258  template<typename _OIter, typename _Size, typename _Generator>
259  _OIter
260  generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag);
261 
262  template<typename _OIter, typename _Size, typename _Generator>
263  _OIter
264  generate_n(_OIter, _Size, _Generator, __gnu_parallel::_Parallelism);
265 
266  template<typename _OIter, typename _Size, typename _Generator,
267  typename _IterTag>
268  _OIter
269  __generate_n_switch(_OIter, _Size, _Generator, _IterTag);
270 
271  template<typename _RAIter, typename _Size, typename _Generator>
272  _RAIter
273  __generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag,
274  __gnu_parallel::_Parallelism __parallelism
276 
277  template<typename _IIter1, typename _IIter2>
278  bool
279  lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2,
281 
282  template<typename _IIter1, typename _IIter2, typename _Predicate>
283  bool
284  lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate,
286 
287  template<typename _IIter1, typename _IIter2>
288  bool
289  lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
290 
291  template<typename _IIter1, typename _IIter2, typename _Predicate>
292  bool
293  lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate);
294 
295  template<typename _IIter1, typename _IIter2,
296  typename _Predicate, typename _IterTag1, typename _IterTag2>
297  bool
298  __lexicographical_compare_switch(_IIter1, _IIter1, _IIter2, _IIter2,
299  _Predicate, _IterTag1, _IterTag2);
300 
301  template<typename _RAIter1, typename _RAIter2, typename _Predicate>
302  bool
303  __lexicographical_compare_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
304  _Predicate, random_access_iterator_tag,
305  random_access_iterator_tag);
306 
307  // algo.h
308  template<typename _IIter1, typename _IIter2>
309  pair<_IIter1, _IIter2>
310  mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
311 
312  template<typename _IIter1, typename _IIter2, typename _Predicate>
313  pair<_IIter1, _IIter2>
314  mismatch(_IIter1, _IIter1, _IIter2, _Predicate,
316 
317  template<typename _IIter1, typename _IIter2>
318  pair<_IIter1, _IIter2>
319  mismatch(_IIter1, _IIter1, _IIter2);
320 
321  template<typename _IIter1, typename _IIter2, typename _Predicate>
322  pair<_IIter1, _IIter2>
323  mismatch(_IIter1, _IIter1, _IIter2, _Predicate);
324 
325  template<typename _IIter1, typename _IIter2, typename _Predicate,
326  typename _IterTag1, typename _IterTag2>
327  pair<_IIter1, _IIter2>
328  __mismatch_switch(_IIter1, _IIter1, _IIter2, _Predicate,
329  _IterTag1, _IterTag2);
330 
331  template<typename _RAIter1, typename _RAIter2, typename _Predicate>
332  pair<_RAIter1, _RAIter2>
333  __mismatch_switch(_RAIter1, _RAIter1, _RAIter2, _Predicate,
334  random_access_iterator_tag, random_access_iterator_tag);
335 
336  template<typename _FIter1, typename _FIter2>
337  _FIter1
338  search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag);
339 
340  template<typename _FIter1, typename _FIter2>
341  _FIter1
342  search(_FIter1, _FIter1, _FIter2, _FIter2);
343 
344  template<typename _FIter1, typename _FIter2, typename _BiPredicate>
345  _FIter1
346  search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
348 
349  template<typename _FIter1, typename _FIter2, typename _BiPredicate>
350  _FIter1
351  search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate);
352 
353  template<typename _RAIter1, typename _RAIter2>
354  _RAIter1
355  __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
356  random_access_iterator_tag, random_access_iterator_tag);
357 
358  template<typename _FIter1, typename _FIter2, typename _IterTag1,
359  typename _IterTag2>
360  _FIter1
361  __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2);
362 
363  template<typename _RAIter1, typename _RAIter2, typename _BiPredicate>
364  _RAIter1
365  __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _BiPredicate,
366  random_access_iterator_tag, random_access_iterator_tag);
367 
368  template<typename _FIter1, typename _FIter2, typename _BiPredicate,
369  typename _IterTag1, typename _IterTag2>
370  _FIter1
371  __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
372  _IterTag1, _IterTag2);
373 
374  template<typename _FIter, typename _Integer, typename _Tp>
375  _FIter
376  search_n(_FIter, _FIter, _Integer, const _Tp&,
378 
379  template<typename _FIter, typename _Integer, typename _Tp,
380  typename _BiPredicate>
381  _FIter
382  search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate,
384 
385  template<typename _FIter, typename _Integer, typename _Tp>
386  _FIter
387  search_n(_FIter, _FIter, _Integer, const _Tp&);
388 
389  template<typename _FIter, typename _Integer, typename _Tp,
390  typename _BiPredicate>
391  _FIter
392  search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate);
393 
394  template<typename _RAIter, typename _Integer, typename _Tp,
395  typename _BiPredicate>
396  _RAIter
397  __search_n_switch(_RAIter, _RAIter, _Integer, const _Tp&,
398  _BiPredicate, random_access_iterator_tag);
399 
400  template<typename _FIter, typename _Integer, typename _Tp,
401  typename _BiPredicate, typename _IterTag>
402  _FIter
403  __search_n_switch(_FIter, _FIter, _Integer, const _Tp&,
404  _BiPredicate, _IterTag);
405 
406 
407  template<typename _IIter, typename _OIter, typename _UnaryOperation>
408  _OIter
409  transform(_IIter, _IIter, _OIter, _UnaryOperation);
410 
411  template<typename _IIter, typename _OIter, typename _UnaryOperation>
412  _OIter
413  transform(_IIter, _IIter, _OIter, _UnaryOperation,
415 
416  template<typename _IIter, typename _OIter, typename _UnaryOperation>
417  _OIter
418  transform(_IIter, _IIter, _OIter, _UnaryOperation,
420 
421  template<typename _IIter, typename _OIter, typename _UnaryOperation,
422  typename _IterTag1, typename _IterTag2>
423  _OIter
424  __transform1_switch(_IIter, _IIter, _OIter, _UnaryOperation,
425  _IterTag1, _IterTag2);
426 
427 
428  template<typename _RAIIter, typename _RAOIter, typename _UnaryOperation>
429  _RAOIter
430  __transform1_switch(_RAIIter, _RAIIter, _RAOIter, _UnaryOperation,
431  random_access_iterator_tag, random_access_iterator_tag,
432  __gnu_parallel::_Parallelism __parallelism
434 
435 
436  template<typename _IIter1, typename _IIter2, typename _OIter,
437  typename _BiOperation>
438  _OIter
439  transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation);
440 
441  template<typename _IIter1, typename _IIter2, typename _OIter,
442  typename _BiOperation>
443  _OIter
444  transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
446 
447  template<typename _IIter1, typename _IIter2, typename _OIter,
448  typename _BiOperation>
449  _OIter
450  transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
452 
453  template<typename _RAIter1, typename _RAIter2, typename _RAIter3,
454  typename _BiOperation>
455  _RAIter3
456  __transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation,
457  random_access_iterator_tag, random_access_iterator_tag,
458  random_access_iterator_tag,
459  __gnu_parallel::_Parallelism __parallelism
461 
462  template<typename _IIter1, typename _IIter2, typename _OIter,
463  typename _BiOperation, typename _Tag1,
464  typename _Tag2, typename _Tag3>
465  _OIter
466  __transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
467  _Tag1, _Tag2, _Tag3);
468 
469 
470  template<typename _FIter, typename _Tp>
471  void
472  replace(_FIter, _FIter, const _Tp&, const _Tp&);
473 
474  template<typename _FIter, typename _Tp>
475  void
476  replace(_FIter, _FIter, const _Tp&, const _Tp&,
478 
479  template<typename _FIter, typename _Tp>
480  void
481  replace(_FIter, _FIter, const _Tp&, const _Tp&,
483 
484  template<typename _FIter, typename _Tp, typename _IterTag>
485  void
486  __replace_switch(_FIter, _FIter, const _Tp&, const _Tp&, _IterTag);
487 
488  template<typename _RAIter, typename _Tp>
489  void
490  __replace_switch(_RAIter, _RAIter, const _Tp&, const _Tp&,
491  random_access_iterator_tag, __gnu_parallel::_Parallelism);
492 
493 
494  template<typename _FIter, typename _Predicate, typename _Tp>
495  void
496  replace_if(_FIter, _FIter, _Predicate, const _Tp&);
497 
498  template<typename _FIter, typename _Predicate, typename _Tp>
499  void
500  replace_if(_FIter, _FIter, _Predicate, const _Tp&,
502 
503  template<typename _FIter, typename _Predicate, typename _Tp>
504  void
505  replace_if(_FIter, _FIter, _Predicate, const _Tp&,
507 
508  template<typename _FIter, typename _Predicate, typename _Tp,
509  typename _IterTag>
510  void
511  __replace_if_switch(_FIter, _FIter, _Predicate, const _Tp&, _IterTag);
512 
513  template<typename _RAIter, typename _Predicate, typename _Tp>
514  void
515  __replace_if_switch(_RAIter, _RAIter, _Predicate, const _Tp&,
516  random_access_iterator_tag,
518 
519 
520  template<typename _FIter>
521  _FIter
522  max_element(_FIter, _FIter);
523 
524  template<typename _FIter>
525  _FIter
526  max_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
527 
528  template<typename _FIter>
529  _FIter
530  max_element(_FIter, _FIter, __gnu_parallel::_Parallelism);
531 
532  template<typename _FIter, typename _Compare>
533  _FIter
534  max_element(_FIter, _FIter, _Compare);
535 
536  template<typename _FIter, typename _Compare>
537  _FIter
538  max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
539 
540  template<typename _FIter, typename _Compare>
541  _FIter
542  max_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
543 
544  template<typename _FIter, typename _Compare, typename _IterTag>
545  _FIter
546  __max_element_switch(_FIter, _FIter, _Compare, _IterTag);
547 
548  template<typename _RAIter, typename _Compare>
549  _RAIter
550  __max_element_switch(
551  _RAIter, _RAIter, _Compare, random_access_iterator_tag,
552  __gnu_parallel::_Parallelism __parallelism
554 
555 
556  template<typename _IIter1, typename _IIter2, typename _OIter>
557  _OIter
558  merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
560 
561  template<typename _IIter1, typename _IIter2, typename _OIter,
562  typename _Compare>
563  _OIter
564  merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
566 
567  template<typename _IIter1, typename _IIter2, typename _OIter,
568  typename _Compare>
569  _OIter
570  merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
571 
572  template<typename _IIter1, typename _IIter2, typename _OIter>
573  _OIter
574  merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
575 
576  template<typename _IIter1, typename _IIter2, typename _OIter,
577  typename _Compare, typename _IterTag1, typename _IterTag2,
578  typename _IterTag3>
579  _OIter
580  __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
581  _IterTag1, _IterTag2, _IterTag3);
582 
583  template<typename _IIter1, typename _IIter2, typename _OIter,
584  typename _Compare>
585  _OIter
586  __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
587  random_access_iterator_tag, random_access_iterator_tag,
588  random_access_iterator_tag);
589 
590 
591  template<typename _FIter>
592  _FIter
593  min_element(_FIter, _FIter);
594 
595  template<typename _FIter>
596  _FIter
597  min_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
598 
599  template<typename _FIter>
600  _FIter
601  min_element(_FIter, _FIter,
602  __gnu_parallel::_Parallelism __parallelism_tag);
603 
604  template<typename _FIter, typename _Compare>
605  _FIter
606  min_element(_FIter, _FIter, _Compare);
607 
608  template<typename _FIter, typename _Compare>
609  _FIter
610  min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
611 
612  template<typename _FIter, typename _Compare>
613  _FIter
614  min_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
615 
616  template<typename _FIter, typename _Compare, typename _IterTag>
617  _FIter
618  __min_element_switch(_FIter, _FIter, _Compare, _IterTag);
619 
620  template<typename _RAIter, typename _Compare>
621  _RAIter
622  __min_element_switch(
623  _RAIter, _RAIter, _Compare, random_access_iterator_tag,
624  __gnu_parallel::_Parallelism __parallelism
626 
627  template<typename _RAIter>
628  void
629  nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
630 
631  template<typename _RAIter, typename _Compare>
632  void
633  nth_element(_RAIter, _RAIter, _RAIter, _Compare,
635 
636  template<typename _RAIter, typename _Compare>
637  void
638  nth_element(_RAIter, _RAIter, _RAIter, _Compare);
639 
640  template<typename _RAIter>
641  void
642  nth_element(_RAIter, _RAIter, _RAIter);
643 
644  template<typename _RAIter, typename _Compare>
645  void
646  partial_sort(_RAIter, _RAIter, _RAIter, _Compare,
648 
649  template<typename _RAIter>
650  void
651  partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
652 
653  template<typename _RAIter, typename _Compare>
654  void
655  partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
656 
657  template<typename _RAIter>
658  void
659  partial_sort(_RAIter, _RAIter, _RAIter);
660 
661  template<typename _FIter, typename _Predicate>
662  _FIter
663  partition(_FIter, _FIter, _Predicate, __gnu_parallel::sequential_tag);
664 
665  template<typename _FIter, typename _Predicate>
666  _FIter
667  partition(_FIter, _FIter, _Predicate);
668 
669  template<typename _FIter, typename _Predicate, typename _IterTag>
670  _FIter
671  __partition_switch(_FIter, _FIter, _Predicate, _IterTag);
672 
673  template<typename _RAIter, typename _Predicate>
674  _RAIter
675  __partition_switch(
676  _RAIter, _RAIter, _Predicate, random_access_iterator_tag);
677 
678  template<typename _RAIter>
679  void
680  random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
681 
682  template<typename _RAIter, typename _RandomNumberGenerator>
683  void
684  random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&,
686 
687  template<typename _RAIter>
688  void
689  random_shuffle(_RAIter, _RAIter);
690 
691  template<typename _RAIter, typename _RandomNumberGenerator>
692  void
693  random_shuffle(_RAIter, _RAIter,
694 #ifdef __GXX_EXPERIMENTAL_CXX0X__
695  _RandomNumberGenerator&&);
696 #else
697  _RandomNumberGenerator&);
698 #endif
699 
700  template<typename _IIter1, typename _IIter2, typename _OIter>
701  _OIter
702  set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
704 
705  template<typename _IIter1, typename _IIter2, typename _OIter,
706  typename _Predicate>
707  _OIter
708  set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
710 
711  template<typename _IIter1, typename _IIter2, typename _OIter>
712  _OIter
713  set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
714 
715  template<typename _IIter1, typename _IIter2, typename _OIter,
716  typename _Predicate>
717  _OIter
718  set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
719 
720  template<typename _IIter1, typename _IIter2, typename _Predicate,
721  typename _OIter, typename _IterTag1, typename _IterTag2,
722  typename _IterTag3>
723  _OIter
724  __set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
725  _Predicate, _IterTag1, _IterTag2, _IterTag3);
726 
727  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
728  typename _Predicate>
729  _Output_RAIter
730  __set_union_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _Output_RAIter,
731  _Predicate, random_access_iterator_tag,
732  random_access_iterator_tag, random_access_iterator_tag);
733 
734  template<typename _IIter1, typename _IIter2, typename _OIter>
735  _OIter
736  set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
738 
739  template<typename _IIter1, typename _IIter2, typename _OIter,
740  typename _Predicate>
741  _OIter
742  set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
744 
745  template<typename _IIter1, typename _IIter2, typename _OIter>
746  _OIter
747  set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
748 
749  template<typename _IIter1, typename _IIter2, typename _OIter,
750  typename _Predicate>
751  _OIter
752  set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
753 
754  template<typename _IIter1, typename _IIter2, typename _Predicate,
755  typename _OIter, typename _IterTag1, typename _IterTag2,
756  typename _IterTag3>
757  _OIter
758  __set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
759  _Predicate, _IterTag1, _IterTag2, _IterTag3);
760 
761  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
762  typename _Predicate>
763  _Output_RAIter
764  __set_intersection_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
765  _Output_RAIter, _Predicate,
766  random_access_iterator_tag,
767  random_access_iterator_tag,
768  random_access_iterator_tag);
769 
770  template<typename _IIter1, typename _IIter2, typename _OIter>
771  _OIter
772  set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
774 
775  template<typename _IIter1, typename _IIter2, typename _OIter,
776  typename _Predicate>
777  _OIter
778  set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
779  _Predicate, __gnu_parallel::sequential_tag);
780 
781  template<typename _IIter1, typename _IIter2, typename _OIter>
782  _OIter
783  set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
784 
785  template<typename _IIter1, typename _IIter2, typename _OIter,
786  typename _Predicate>
787  _OIter
788  set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
789  _Predicate);
790 
791  template<typename _IIter1, typename _IIter2, typename _Predicate,
792  typename _OIter, typename _IterTag1, typename _IterTag2,
793  typename _IterTag3>
794  _OIter
795  __set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2,
796  _OIter, _Predicate, _IterTag1, _IterTag2,
797  _IterTag3);
798 
799  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
800  typename _Predicate>
801  _Output_RAIter
802  __set_symmetric_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
803  _Output_RAIter, _Predicate,
804  random_access_iterator_tag,
805  random_access_iterator_tag,
806  random_access_iterator_tag);
807 
808 
809  template<typename _IIter1, typename _IIter2, typename _OIter>
810  _OIter
811  set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
813 
814  template<typename _IIter1, typename _IIter2, typename _OIter,
815  typename _Predicate>
816  _OIter
817  set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
819 
820  template<typename _IIter1, typename _IIter2, typename _OIter>
821  _OIter
822  set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
823 
824  template<typename _IIter1, typename _IIter2, typename _OIter,
825  typename _Predicate>
826  _OIter
827  set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
828 
829  template<typename _IIter1, typename _IIter2, typename _Predicate,
830  typename _OIter, typename _IterTag1, typename _IterTag2,
831  typename _IterTag3>
832  _OIter
833  __set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
834  _Predicate, _IterTag1, _IterTag2, _IterTag3);
835 
836  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
837  typename _Predicate>
838  _Output_RAIter
839  __set_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
840  _Output_RAIter, _Predicate,
841  random_access_iterator_tag,
842  random_access_iterator_tag,
843  random_access_iterator_tag);
844 
845 
846  template<typename _RAIter>
847  void
848  sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
849 
850  template<typename _RAIter, typename _Compare>
851  void
852  sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
853 
854  template<typename _RAIter>
855  void
856  sort(_RAIter, _RAIter);
857 
858  template<typename _RAIter, typename _Compare>
859  void
860  sort(_RAIter, _RAIter, _Compare);
861 
862  template<typename _RAIter>
863  void
864  stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
865 
866  template<typename _RAIter, typename _Compare>
867  void
868  stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
869 
870  template<typename _RAIter>
871  void
872  stable_sort(_RAIter, _RAIter);
873 
874  template<typename _RAIter, typename _Compare>
875  void
876  stable_sort(_RAIter, _RAIter, _Compare);
877 
878  template<typename _IIter, typename _OIter>
879  _OIter
880  unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
881 
882  template<typename _IIter, typename _OIter, typename _Predicate>
883  _OIter
884  unique_copy(_IIter, _IIter, _OIter, _Predicate,
886 
887  template<typename _IIter, typename _OIter>
888  _OIter
889  unique_copy(_IIter, _IIter, _OIter);
890 
891  template<typename _IIter, typename _OIter, typename _Predicate>
892  _OIter
893  unique_copy(_IIter, _IIter, _OIter, _Predicate);
894 
895  template<typename _IIter, typename _OIter, typename _Predicate,
896  typename _IterTag1, typename _IterTag2>
897  _OIter
898  __unique_copy_switch(_IIter, _IIter, _OIter, _Predicate,
899  _IterTag1, _IterTag2);
900 
901  template<typename _RAIter, typename _RandomAccess_OIter, typename _Predicate>
902  _RandomAccess_OIter
903  __unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate,
904  random_access_iterator_tag, random_access_iterator_tag);
905 } // end namespace __parallel
906 } // end namespace std
907 
908 #endif /* _GLIBCXX_PARALLEL_ALGORITHMFWD_H */