Install gcc-4.4.0-tdm-1-core-2.tar.gz
[msysgit.git] / mingw / lib / gcc / mingw32 / 4.3.3 / include / c++ / parallel / algorithmfwd.h
blobea6b245eb7e2b2a1ac29c76d2d0c7583e21799c3
1 // <algorithm> parallel extensions -*- C++ -*-
3 // Copyright (C) 2007, 2008 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 2, or (at your option) any later
9 // version.
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.
16 // You should have received a copy of the GNU General Public License
17 // along with this library; see the file COPYING. If not, write to
18 // the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
19 // MA 02111-1307, USA.
21 // As a special exception, you may use this file as part of a free
22 // software library without restriction. Specifically, if other files
23 // instantiate templates or use macros or inline functions from this
24 // file, or you compile this file and link it with other files to
25 // produce an executable, this file does not by itself cause the
26 // resulting executable to be covered by the GNU General Public
27 // License. This exception does not however invalidate any other
28 // reasons why the executable file might be covered by the GNU General
29 // Public License.
31 /** @file parallel/algorithmfwd.h
32 * This file is a GNU parallel extension to the Standard C++ Library.
35 #ifndef _GLIBCXX_PARALLEL_ALGORITHMFWD_H
36 #define _GLIBCXX_PARALLEL_ALGORITHMFWD_H 1
38 #pragma GCC system_header
40 #include <parallel/tags.h>
41 #include <parallel/settings.h>
43 namespace std
45 namespace __parallel
47 template<typename _FIter>
48 _FIter
49 adjacent_find(_FIter, _FIter);
51 template<typename _FIter>
52 _FIter
53 adjacent_find(_FIter, _FIter, __gnu_parallel::sequential_tag);
55 template<typename _FIter, typename _IterTag>
56 _FIter
57 adjacent_find_switch(_FIter, _FIter, _IterTag);
59 template<typename _RAIter>
60 _RAIter
61 adjacent_find_switch(_RAIter, _RAIter, random_access_iterator_tag);
64 template<typename _FIter, typename _BiPredicate>
65 _FIter
66 adjacent_find(_FIter, _FIter, _BiPredicate);
68 template<typename _FIter, typename _BiPredicate>
69 _FIter
70 adjacent_find(_FIter, _FIter, _BiPredicate,
71 __gnu_parallel::sequential_tag);
73 template<typename _FIter, typename _BiPredicate, typename _IterTag>
74 _FIter
75 adjacent_find_switch(_FIter, _FIter, _BiPredicate, _IterTag);
77 template<typename _RAIter, typename _BiPredicate>
78 _RAIter
79 adjacent_find_switch(_RAIter, _RAIter, _BiPredicate,
80 random_access_iterator_tag);
83 template<typename _IIter, typename _Tp>
84 typename iterator_traits<_IIter>::difference_type
85 count(_IIter, _IIter, const _Tp&);
87 template<typename _IIter, typename _Tp>
88 typename iterator_traits<_IIter>::difference_type
89 count(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
91 template<typename _IIter, typename _Tp>
92 typename iterator_traits<_IIter>::difference_type
93 count(_IIter, _IIter, const _Tp&, __gnu_parallel::_Parallelism);
95 template<typename _IIter, typename _Tp, typename _IterTag>
96 typename iterator_traits<_IIter>::difference_type
97 count_switch(_IIter, _IIter, const _Tp&, _IterTag);
99 template<typename _RAIter, typename _Tp>
100 typename iterator_traits<_RAIter>::difference_type
101 count_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag,
102 __gnu_parallel::_Parallelism);
105 template<typename _IIter, typename _Predicate>
106 typename iterator_traits<_IIter>::difference_type
107 count_if(_IIter, _IIter, _Predicate);
109 template<typename _IIter, typename _Predicate>
110 typename iterator_traits<_IIter>::difference_type
111 count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
113 template<typename _IIter, typename _Predicate>
114 typename iterator_traits<_IIter>::difference_type
115 count_if(_IIter, _IIter, _Predicate, __gnu_parallel::_Parallelism);
117 template<typename _IIter, typename _Predicate, typename _IterTag>
118 typename iterator_traits<_IIter>::difference_type
119 count_if_switch(_IIter, _IIter, _Predicate, _IterTag);
121 template<typename _RAIter, typename _Predicate>
122 typename iterator_traits<_RAIter>::difference_type
123 count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag,
124 __gnu_parallel::_Parallelism);
126 // algobase.h
127 template<typename _IIter1, typename _IIter2>
128 bool
129 equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
131 template<typename _IIter1, typename _IIter2, typename Predicate>
132 bool
133 equal(_IIter1, _IIter1, _IIter2, Predicate,
134 __gnu_parallel::sequential_tag);
136 template<typename _IIter1, typename _IIter2>
137 bool
138 equal(_IIter1, _IIter1, _IIter2);
140 template<typename _IIter1, typename _IIter2, typename Predicate>
141 bool
142 equal(_IIter1, _IIter1, _IIter2, Predicate);
144 template<typename _IIter, typename _Tp>
145 _IIter
146 find(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
148 template<typename _IIter, typename _Tp>
149 _IIter
150 find(_IIter, _IIter, const _Tp& val);
152 template<typename _IIter, typename _Tp, typename _IterTag>
153 _IIter
154 find_switch(_IIter, _IIter, const _Tp&, _IterTag);
156 template<typename _RAIter, typename _Tp>
157 _RAIter
158 find_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag);
160 template<typename _IIter, typename _Predicate>
161 _IIter
162 find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
164 template<typename _IIter, typename _Predicate>
165 _IIter
166 find_if(_IIter, _IIter, _Predicate);
168 template<typename _IIter, typename _Predicate, typename _IterTag>
169 _IIter
170 find_if_switch(_IIter, _IIter, _Predicate, _IterTag);
172 template<typename _RAIter, typename _Predicate>
173 _RAIter
174 find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag);
176 template<typename _IIter, typename _FIter>
177 _IIter
178 find_first_of(_IIter, _IIter, _FIter, _FIter,
179 __gnu_parallel::sequential_tag);
181 template<typename _IIter, typename _FIter, typename _BiPredicate>
182 _IIter
183 find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
184 __gnu_parallel::sequential_tag);
186 template<typename _IIter, typename _FIter, typename _BiPredicate>
187 _IIter
188 find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate);
190 template<typename _IIter, typename _FIter>
191 _IIter
192 find_first_of(_IIter, _IIter, _FIter, _FIter);
194 template<typename _IIter, typename _FIter,
195 typename _IterTag1, typename _IterTag2>
196 _IIter
197 find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2);
199 template<typename _RAIter, typename _FIter, typename _BiPredicate,
200 typename _IterTag>
201 _RAIter
202 find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate,
203 random_access_iterator_tag, _IterTag);
205 template<typename _IIter, typename _FIter, typename _BiPredicate,
206 typename _IterTag1, typename _IterTag2>
207 _IIter
208 find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
209 _IterTag1, _IterTag2);
212 template<typename _IIter, typename _Function>
213 _Function
214 for_each(_IIter, _IIter, _Function);
216 template<typename _IIter, typename _Function>
217 _Function
218 for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag);
220 template<typename _Iterator, typename _Function>
221 _Function
222 for_each(_Iterator, _Iterator, _Function, __gnu_parallel::_Parallelism);
224 template<typename _IIter, typename _Function, typename _IterTag>
225 _Function
226 for_each_switch(_IIter, _IIter, _Function, _IterTag);
228 template<typename _RAIter, typename _Function>
229 _Function
230 for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag,
231 __gnu_parallel::_Parallelism);
234 template<typename _FIter, typename _Generator>
235 void
236 generate(_FIter, _FIter, _Generator);
238 template<typename _FIter, typename _Generator>
239 void
240 generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag);
242 template<typename _FIter, typename _Generator>
243 void
244 generate(_FIter, _FIter, _Generator, __gnu_parallel::_Parallelism);
246 template<typename _FIter, typename _Generator, typename _IterTag>
247 void
248 generate_switch(_FIter, _FIter, _Generator, _IterTag);
250 template<typename _RAIter, typename _Generator>
251 void
252 generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag,
253 __gnu_parallel::_Parallelism);
255 template<typename _OIter, typename _Size, typename _Generator>
256 _OIter
257 generate_n(_OIter, _Size, _Generator);
259 template<typename _OIter, typename _Size, typename _Generator>
260 _OIter
261 generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag);
263 template<typename _OIter, typename _Size, typename _Generator>
264 _OIter
265 generate_n(_OIter, _Size, _Generator, __gnu_parallel::_Parallelism);
267 template<typename _OIter, typename _Size, typename _Generator,
268 typename _IterTag>
269 _OIter
270 generate_n_switch(_OIter, _Size, _Generator, _IterTag);
272 template<typename _RAIter, typename _Size, typename _Generator>
273 _RAIter
274 generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag,
275 __gnu_parallel::_Parallelism);
277 template<typename _IIter1, typename _IIter2>
278 bool
279 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2,
280 __gnu_parallel::sequential_tag);
282 template<typename _IIter1, typename _IIter2, typename _Predicate>
283 bool
284 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate,
285 __gnu_parallel::sequential_tag);
287 template<typename _IIter1, typename _IIter2>
288 bool
289 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
291 template<typename _IIter1, typename _IIter2, typename _Predicate>
292 bool
293 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate);
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);
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);
307 // algo.h
308 template<typename _IIter1, typename _IIter2>
309 pair<_IIter1, _IIter2>
310 mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
312 template<typename _IIter1, typename _IIter2, typename _Predicate>
313 pair<_IIter1, _IIter2>
314 mismatch(_IIter1, _IIter1, _IIter2, _Predicate,
315 __gnu_parallel::sequential_tag);
317 template<typename _IIter1, typename _IIter2>
318 pair<_IIter1, _IIter2>
319 mismatch(_IIter1, _IIter1, _IIter2);
321 template<typename _IIter1, typename _IIter2, typename _Predicate>
322 pair<_IIter1, _IIter2>
323 mismatch(_IIter1, _IIter1, _IIter2, _Predicate);
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);
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);
336 template<typename _FIter1, typename _FIter2>
337 _FIter1
338 search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag);
340 template<typename _FIter1, typename _FIter2>
341 _FIter1
342 search(_FIter1, _FIter1, _FIter2, _FIter2);
344 template<typename _FIter1, typename _FIter2, typename _BiPredicate>
345 _FIter1
346 search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
347 __gnu_parallel::sequential_tag);
349 template<typename _FIter1, typename _FIter2, typename _BiPredicate>
350 _FIter1
351 search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate);
353 template<typename _RAIter1, typename _RAIter2>
354 _RAIter1
355 search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
356 random_access_iterator_tag, random_access_iterator_tag);
358 template<typename _FIter1, typename _FIter2, typename _IterTag1,
359 typename _IterTag2>
360 _FIter1
361 search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2);
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);
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);
374 template<typename _FIter, typename _Integer, typename _Tp>
375 _FIter
376 search_n(_FIter, _FIter, _Integer, const _Tp&,
377 __gnu_parallel::sequential_tag);
379 template<typename _FIter, typename _Integer, typename _Tp,
380 typename _BiPredicate>
381 _FIter
382 search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate,
383 __gnu_parallel::sequential_tag);
385 template<typename _FIter, typename _Integer, typename _Tp>
386 _FIter
387 search_n(_FIter, _FIter, _Integer, const _Tp&);
389 template<typename _FIter, typename _Integer, typename _Tp,
390 typename _BiPredicate>
391 _FIter
392 search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate);
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);
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);
407 template<typename _IIter, typename _OIter, typename UnaryOperation>
408 _OIter
409 transform(_IIter, _IIter, _OIter, UnaryOperation);
411 template<typename _IIter, typename _OIter, typename UnaryOperation>
412 _OIter
413 transform(_IIter, _IIter, _OIter, UnaryOperation,
414 __gnu_parallel::sequential_tag);
416 template<typename _IIter, typename _OIter, typename UnaryOperation>
417 _OIter
418 transform(_IIter, _IIter, _OIter, UnaryOperation,
419 __gnu_parallel::_Parallelism);
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);
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);
435 template<typename _IIter1, typename _IIter2, typename _OIter,
436 typename _BiOperation>
437 _OIter
438 transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation);
440 template<typename _IIter1, typename _IIter2, typename _OIter,
441 typename _BiOperation>
442 _OIter
443 transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
444 __gnu_parallel::sequential_tag);
446 template<typename _IIter1, typename _IIter2, typename _OIter,
447 typename _BiOperation>
448 _OIter
449 transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
450 __gnu_parallel::_Parallelism);
452 template<typename _RAIter1, typename _RAIter2, typename _RAIter3,
453 typename _BiOperation>
454 _RAIter3
455 transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation,
456 random_access_iterator_tag, random_access_iterator_tag,
457 random_access_iterator_tag,
458 __gnu_parallel::_Parallelism);
460 template<typename _IIter1, typename _IIter2, typename _OIter,
461 typename _BiOperation, typename _Tag1,
462 typename _Tag2, typename _Tag3>
463 _OIter
464 transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
465 _Tag1, _Tag2, _Tag3);
468 template<typename _FIter, typename _Tp>
469 void
470 replace(_FIter, _FIter, const _Tp&, const _Tp&);
472 template<typename _FIter, typename _Tp>
473 void
474 replace(_FIter, _FIter, const _Tp&, const _Tp&,
475 __gnu_parallel::sequential_tag);
477 template<typename _FIter, typename _Tp>
478 void
479 replace(_FIter, _FIter, const _Tp&, const _Tp&,
480 __gnu_parallel::_Parallelism);
482 template<typename _FIter, typename _Tp, typename _IterTag>
483 void
484 replace_switch(_FIter, _FIter, const _Tp&, const _Tp&, _IterTag);
486 template<typename _RAIter, typename _Tp>
487 void
488 replace_switch(_RAIter, _RAIter, const _Tp&, const _Tp&,
489 random_access_iterator_tag, __gnu_parallel::_Parallelism);
492 template<typename _FIter, typename _Predicate, typename _Tp>
493 void
494 replace_if(_FIter, _FIter, _Predicate, const _Tp&);
496 template<typename _FIter, typename _Predicate, typename _Tp>
497 void
498 replace_if(_FIter, _FIter, _Predicate, const _Tp&,
499 __gnu_parallel::sequential_tag);
501 template<typename _FIter, typename _Predicate, typename _Tp>
502 void
503 replace_if(_FIter, _FIter, _Predicate, const _Tp&,
504 __gnu_parallel::_Parallelism);
506 template<typename _FIter, typename _Predicate, typename _Tp,
507 typename _IterTag>
508 void
509 replace_if_switch(_FIter, _FIter, _Predicate, const _Tp&, _IterTag);
511 template<typename _RAIter, typename _Predicate, typename _Tp>
512 void
513 replace_if_switch(_RAIter, _RAIter, _Predicate, const _Tp&,
514 random_access_iterator_tag,
515 __gnu_parallel::_Parallelism);
518 template<typename _FIter>
519 _FIter
520 max_element(_FIter, _FIter);
522 template<typename _FIter>
523 _FIter
524 max_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
526 template<typename _FIter>
527 _FIter
528 max_element(_FIter, _FIter, __gnu_parallel::_Parallelism);
530 template<typename _FIter, typename _Compare>
531 _FIter
532 max_element(_FIter, _FIter, _Compare);
534 template<typename _FIter, typename _Compare>
535 _FIter
536 max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
538 template<typename _FIter, typename _Compare>
539 _FIter
540 max_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
542 template<typename _FIter, typename _Compare, typename _IterTag>
543 _FIter
544 max_element_switch(_FIter, _FIter, _Compare, _IterTag);
546 template<typename _RAIter, typename _Compare>
547 _RAIter
548 max_element_switch(_RAIter, _RAIter, _Compare, random_access_iterator_tag,
549 __gnu_parallel::_Parallelism);
552 template<typename _IIter1, typename _IIter2, typename _OIter>
553 _OIter
554 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
555 __gnu_parallel::sequential_tag);
557 template<typename _IIter1, typename _IIter2, typename _OIter,
558 typename _Compare>
559 _OIter
560 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
561 __gnu_parallel::sequential_tag);
563 template<typename _IIter1, typename _IIter2, typename _OIter,
564 typename _Compare>
565 _OIter
566 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
568 template<typename _IIter1, typename _IIter2, typename _OIter>
569 _OIter
570 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
572 template<typename _IIter1, typename _IIter2, typename _OIter,
573 typename _Compare, typename _IterTag1, typename _IterTag2,
574 typename _IterTag3>
575 _OIter
576 merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
577 _IterTag1, _IterTag2, _IterTag3);
579 template<typename _IIter1, typename _IIter2, typename _OIter,
580 typename _Compare>
581 _OIter
582 merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
583 random_access_iterator_tag, random_access_iterator_tag,
584 random_access_iterator_tag);
587 template<typename _FIter>
588 _FIter
589 min_element(_FIter, _FIter);
591 template<typename _FIter>
592 _FIter
593 min_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
595 template<typename _FIter>
596 _FIter
597 min_element(_FIter, _FIter, __gnu_parallel::_Parallelism parallelism_tag);
599 template<typename _FIter, typename _Compare>
600 _FIter
601 min_element(_FIter, _FIter, _Compare);
603 template<typename _FIter, typename _Compare>
604 _FIter
605 min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
607 template<typename _FIter, typename _Compare>
608 _FIter
609 min_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
611 template<typename _FIter, typename _Compare, typename _IterTag>
612 _FIter
613 min_element_switch(_FIter, _FIter, _Compare, _IterTag);
615 template<typename _RAIter, typename _Compare>
616 _RAIter
617 min_element_switch(_RAIter, _RAIter, _Compare, random_access_iterator_tag,
618 __gnu_parallel::_Parallelism);
620 template<typename _RAIter>
621 void
622 nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
624 template<typename _RAIter, typename _Compare>
625 void
626 nth_element(_RAIter, _RAIter, _RAIter, _Compare,
627 __gnu_parallel::sequential_tag);
629 template<typename _RAIter, typename _Compare>
630 void
631 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
633 template<typename _RAIter>
634 void
635 nth_element(_RAIter, _RAIter, _RAIter);
637 template<typename _RAIter, typename _Compare>
638 void
639 partial_sort(_RAIter, _RAIter, _RAIter, _Compare,
640 __gnu_parallel::sequential_tag);
642 template<typename _RAIter>
643 void
644 partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
646 template<typename _RAIter, typename _Compare>
647 void
648 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
650 template<typename _RAIter>
651 void
652 partial_sort(_RAIter, _RAIter, _RAIter);
654 template<typename _FIter, typename Predicate>
655 _FIter
656 partition(_FIter, _FIter, Predicate, __gnu_parallel::sequential_tag);
658 template<typename _FIter, typename Predicate>
659 _FIter
660 partition(_FIter, _FIter, Predicate);
662 template<typename _FIter, typename Predicate, typename _IterTag>
663 _FIter
664 partition_switch(_FIter, _FIter, Predicate, _IterTag);
666 template<typename _RAIter, typename Predicate>
667 _RAIter
668 partition_switch(_RAIter, _RAIter, Predicate, random_access_iterator_tag);
670 template<typename _RAIter>
671 void
672 random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
674 template<typename _RAIter, typename _RandomNumberGenerator>
675 void
676 random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&,
677 __gnu_parallel::sequential_tag);
679 template<typename _RAIter>
680 void
681 random_shuffle(_RAIter, _RAIter);
683 template<typename _RAIter, typename _RandomNumberGenerator>
684 void
685 random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&);
687 template<typename _IIter1, typename _IIter2, typename _OIter>
688 _OIter
689 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
690 __gnu_parallel::sequential_tag);
692 template<typename _IIter1, typename _IIter2, typename _OIter,
693 typename Predicate>
694 _OIter
695 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, Predicate,
696 __gnu_parallel::sequential_tag);
698 template<typename _IIter1, typename _IIter2, typename _OIter>
699 _OIter
700 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
702 template<typename _IIter1, typename _IIter2, typename _OIter,
703 typename _Predicate>
704 _OIter
705 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
707 template<typename _IIter1, typename _IIter2, typename _Predicate,
708 typename _OIter, typename _IterTag1, typename _IterTag2,
709 typename _IterTag3>
710 _OIter
711 set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
712 _Predicate, _IterTag1, _IterTag2, _IterTag3);
714 template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
715 typename _Predicate>
716 _Output_RAIter
717 set_union_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _Output_RAIter,
718 _Predicate, random_access_iterator_tag,
719 random_access_iterator_tag, random_access_iterator_tag);
721 template<typename _IIter1, typename _IIter2, typename _OIter>
722 _OIter
723 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
724 __gnu_parallel::sequential_tag);
726 template<typename _IIter1, typename _IIter2, typename _OIter,
727 typename _Predicate>
728 _OIter
729 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
730 __gnu_parallel::sequential_tag);
732 template<typename _IIter1, typename _IIter2, typename _OIter>
733 _OIter
734 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
736 template<typename _IIter1, typename _IIter2, typename _OIter,
737 typename _Predicate>
738 _OIter
739 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
741 template<typename _IIter1, typename _IIter2, typename _Predicate,
742 typename _OIter, typename _IterTag1, typename _IterTag2,
743 typename _IterTag3>
744 _OIter
745 set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
746 _Predicate, _IterTag1, _IterTag2, _IterTag3);
748 template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
749 typename _Predicate>
750 _Output_RAIter
751 set_intersection_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
752 _Output_RAIter, _Predicate,
753 random_access_iterator_tag,
754 random_access_iterator_tag,
755 random_access_iterator_tag);
757 template<typename _IIter1, typename _IIter2, typename _OIter>
758 _OIter
759 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
760 __gnu_parallel::sequential_tag);
762 template<typename _IIter1, typename _IIter2, typename _OIter,
763 typename _Predicate>
764 _OIter
765 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
766 _Predicate, __gnu_parallel::sequential_tag);
768 template<typename _IIter1, typename _IIter2, typename _OIter>
769 _OIter
770 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
772 template<typename _IIter1, typename _IIter2, typename _OIter,
773 typename _Predicate>
774 _OIter
775 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
776 _Predicate);
778 template<typename _IIter1, typename _IIter2, typename _Predicate,
779 typename _OIter, typename _IterTag1, typename _IterTag2,
780 typename _IterTag3>
781 _OIter
782 set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2,
783 _OIter, _Predicate, _IterTag1, _IterTag2,
784 _IterTag3);
786 template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
787 typename _Predicate>
788 _Output_RAIter
789 set_symmetric_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
790 _Output_RAIter, _Predicate,
791 random_access_iterator_tag,
792 random_access_iterator_tag,
793 random_access_iterator_tag);
796 template<typename _IIter1, typename _IIter2, typename _OIter>
797 _OIter
798 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
799 __gnu_parallel::sequential_tag);
801 template<typename _IIter1, typename _IIter2, typename _OIter,
802 typename _Predicate>
803 _OIter
804 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
805 __gnu_parallel::sequential_tag);
807 template<typename _IIter1, typename _IIter2, typename _OIter>
808 _OIter
809 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
811 template<typename _IIter1, typename _IIter2, typename _OIter,
812 typename _Predicate>
813 _OIter
814 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
816 template<typename _IIter1, typename _IIter2, typename _Predicate,
817 typename _OIter, typename _IterTag1, typename _IterTag2,
818 typename _IterTag3>
819 _OIter
820 set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
821 _Predicate, _IterTag1, _IterTag2, _IterTag3);
823 template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
824 typename _Predicate>
825 _Output_RAIter
826 set_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
827 _Output_RAIter, _Predicate,
828 random_access_iterator_tag,
829 random_access_iterator_tag,
830 random_access_iterator_tag);
833 template<typename _RAIter>
834 void
835 sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
837 template<typename _RAIter, typename _Compare>
838 void
839 sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
841 template<typename _RAIter>
842 void
843 sort(_RAIter, _RAIter);
845 template<typename _RAIter, typename _Compare>
846 void
847 sort(_RAIter, _RAIter, _Compare);
849 template<typename _RAIter>
850 void
851 stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
853 template<typename _RAIter, typename _Compare>
854 void
855 stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
857 template<typename _RAIter>
858 void
859 stable_sort(_RAIter, _RAIter);
861 template<typename _RAIter, typename _Compare>
862 void
863 stable_sort(_RAIter, _RAIter, _Compare);
865 template<typename _IIter, typename _OIter>
866 _OIter
867 unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
869 template<typename _IIter, typename _OIter, typename _Predicate>
870 _OIter
871 unique_copy(_IIter, _IIter, _OIter, _Predicate,
872 __gnu_parallel::sequential_tag);
874 template<typename _IIter, typename _OIter>
875 _OIter
876 unique_copy(_IIter, _IIter, _OIter);
878 template<typename _IIter, typename _OIter, typename _Predicate>
879 _OIter
880 unique_copy(_IIter, _IIter, _OIter, _Predicate);
882 template<typename _IIter, typename _OIter, typename _Predicate,
883 typename _IterTag1, typename _IterTag2>
884 _OIter
885 unique_copy_switch(_IIter, _IIter, _OIter, _Predicate,
886 _IterTag1, _IterTag2);
888 template<typename _RAIter, typename _RandomAccess_OIter, typename _Predicate>
889 _RandomAccess_OIter
890 unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate,
891 random_access_iterator_tag, random_access_iterator_tag);
892 } // end namespace __parallel
893 } // end namespace std
895 #endif