Where Online Learning is simpler!
The C and C++ Include Header Files
/usr/include/c++/11/pstl/algorithm_fwd.h
$ cat -n /usr/include/c++/11/pstl/algorithm_fwd.h 1 // -*- C++ -*- 2 //===-- algorithm_fwd.h --------------------------------------------------===// 3 // 4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5 // See https://llvm.org/LICENSE.txt for license information. 6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef _PSTL_ALGORITHM_FWD_H 11 #define _PSTL_ALGORITHM_FWD_H 12 13 #include
14 #include
15 16 namespace __pstl 17 { 18 namespace __internal 19 { 20 21 //------------------------------------------------------------------------ 22 // any_of 23 //------------------------------------------------------------------------ 24 25 template
26 bool 27 __brick_any_of(const _ForwardIterator, const _ForwardIterator, _Pred, 28 /*__is_vector=*/std::false_type) noexcept; 29 30 template
31 bool 32 __brick_any_of(const _ForwardIterator, const _ForwardIterator, _Pred, 33 /*__is_vector=*/std::true_type) noexcept; 34 35 template
36 bool 37 __pattern_any_of(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Pred, _IsVector, 38 /*parallel=*/std::false_type) noexcept; 39 40 template
41 bool 42 __pattern_any_of(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Pred, _IsVector, 43 /*parallel=*/std::true_type); 44 45 //------------------------------------------------------------------------ 46 // walk1 (pseudo) 47 // 48 // walk1 evaluates f(x) for each dereferenced value x drawn from [first,last) 49 //------------------------------------------------------------------------ 50 51 template
52 void __brick_walk1(_ForwardIterator, _ForwardIterator, _Function, 53 /*vector=*/std::false_type) noexcept; 54 55 template
56 void __brick_walk1(_RandomAccessIterator, _RandomAccessIterator, _Function, 57 /*vector=*/std::true_type) noexcept; 58 59 template
60 void 61 __pattern_walk1(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Function, _IsVector, 62 /*parallel=*/std::false_type) noexcept; 63 64 template
65 void 66 __pattern_walk1(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Function, _IsVector, 67 /*parallel=*/std::true_type); 68 69 template
70 void 71 __pattern_walk_brick(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Brick, 72 /*parallel=*/std::false_type) noexcept; 73 74 template
75 void 76 __pattern_walk_brick(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Brick, 77 /*parallel=*/std::true_type); 78 79 //------------------------------------------------------------------------ 80 // walk1_n 81 //------------------------------------------------------------------------ 82 83 template
84 _ForwardIterator __brick_walk1_n(_ForwardIterator, _Size, _Function, 85 /*_IsVectorTag=*/std::false_type); 86 87 template
88 _RandomAccessIterator __brick_walk1_n(_RandomAccessIterator, _DifferenceType, _Function, 89 /*vectorTag=*/std::true_type) noexcept; 90 91 template
92 _ForwardIterator 93 __pattern_walk1_n(_ExecutionPolicy&&, _ForwardIterator, _Size, _Function, _IsVector, 94 /*is_parallel=*/std::false_type) noexcept; 95 96 template
97 _RandomAccessIterator 98 __pattern_walk1_n(_ExecutionPolicy&&, _RandomAccessIterator, _Size, _Function, _IsVector, 99 /*is_parallel=*/std::true_type); 100 101 template
102 _ForwardIterator 103 __pattern_walk_brick_n(_ExecutionPolicy&&, _ForwardIterator, _Size, _Brick, 104 /*is_parallel=*/std::false_type) noexcept; 105 106 template
107 _RandomAccessIterator 108 __pattern_walk_brick_n(_ExecutionPolicy&&, _RandomAccessIterator, _Size, _Brick, 109 /*is_parallel=*/std::true_type); 110 111 //------------------------------------------------------------------------ 112 // walk2 (pseudo) 113 // 114 // walk2 evaluates f(x,y) for deferenced values (x,y) drawn from [first1,last1) and [first2,...) 115 //------------------------------------------------------------------------ 116 117 template
118 _ForwardIterator2 __brick_walk2(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Function, 119 /*vector=*/std::false_type) noexcept; 120 121 template
122 _ForwardIterator2 __brick_walk2(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Function, 123 /*vector=*/std::true_type) noexcept; 124 125 template
126 _ForwardIterator2 __brick_walk2_n(_ForwardIterator1, _Size, _ForwardIterator2, _Function, 127 /*vector=*/std::false_type) noexcept; 128 129 template
130 _ForwardIterator2 __brick_walk2_n(_ForwardIterator1, _Size, _ForwardIterator2, _Function, 131 /*vector=*/std::true_type) noexcept; 132 133 template
134 _ForwardIterator2 135 __pattern_walk2(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Function, _IsVector, 136 /*parallel=*/std::false_type) noexcept; 137 138 template
139 _ForwardIterator2 140 __pattern_walk2(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Function, _IsVector, 141 /*parallel=*/std::true_type); 142 143 template
145 _ForwardIterator2 146 __pattern_walk2_n(_ExecutionPolicy&&, _ForwardIterator1, _Size, _ForwardIterator2, _Function, _IsVector, 147 /*parallel=*/std::false_type) noexcept; 148 149 template
151 _RandomAccessIterator2 152 __pattern_walk2_n(_ExecutionPolicy&&, _RandomAccessIterator1, _Size, _RandomAccessIterator2, _Function, _IsVector, 153 /*parallel=*/std::true_type); 154 155 template
156 _ForwardIterator2 157 __pattern_walk2_brick(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Brick, 158 /*parallel=*/std::false_type) noexcept; 159 160 template
161 _RandomAccessIterator2 162 __pattern_walk2_brick(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 163 _Brick, 164 /*parallel=*/std::true_type); 165 166 template
167 _ForwardIterator2 168 __pattern_walk2_brick_n(_ExecutionPolicy&&, _ForwardIterator1, _Size, _ForwardIterator2, _Brick, 169 /*parallel=*/std::false_type) noexcept; 170 171 template
172 _RandomAccessIterator2 173 __pattern_walk2_brick_n(_ExecutionPolicy&&, _RandomAccessIterator1, _Size, _RandomAccessIterator2, _Brick, 174 /*parallel=*/std::true_type); 175 176 //------------------------------------------------------------------------ 177 // walk3 (pseudo) 178 // 179 // walk3 evaluates f(x,y,z) for (x,y,z) drawn from [first1,last1), [first2,...), [first3,...) 180 //------------------------------------------------------------------------ 181 182 template
183 _ForwardIterator3 __brick_walk3(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator3, _Function, 184 /*vector=*/std::false_type) noexcept; 185 186 template
187 _RandomAccessIterator3 __brick_walk3(_RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 188 _RandomAccessIterator3, _Function, 189 /*vector=*/std::true_type) noexcept; 190 191 template
193 _ForwardIterator3 194 __pattern_walk3(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator3, 195 _Function, _IsVector, 196 /*parallel=*/std::false_type) noexcept; 197 198 template
200 _RandomAccessIterator3 201 __pattern_walk3(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 202 _RandomAccessIterator3, _Function, _IsVector, /*parallel=*/std::true_type); 203 204 //------------------------------------------------------------------------ 205 // equal 206 //------------------------------------------------------------------------ 207 208 template
209 bool __brick_equal(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _BinaryPredicate, 210 /* is_vector = */ std::false_type) noexcept; 211 212 template
213 bool __brick_equal(_RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, _BinaryPredicate, 214 /* is_vector = */ std::true_type) noexcept; 215 216 template
218 bool 219 __pattern_equal(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _BinaryPredicate, 220 _IsVector, /* is_parallel = */ std::false_type) noexcept; 221 222 template
224 bool 225 __pattern_equal(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 226 _BinaryPredicate, _IsVector, /* is_parallel = */ std::true_type); 227 228 template
229 bool __brick_equal(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, _BinaryPredicate, 230 /* is_vector = */ std::false_type) noexcept; 231 232 template
233 bool __brick_equal(_RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, _RandomAccessIterator2, 234 _BinaryPredicate, /* is_vector = */ std::true_type) noexcept; 235 236 template
238 bool 239 __pattern_equal(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 240 _BinaryPredicate, _IsVector, /* is_parallel = */ std::false_type) noexcept; 241 242 template
244 bool 245 __pattern_equal(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 246 _RandomAccessIterator2, _BinaryPredicate, _IsVector, /* is_parallel = */ std::true_type); 247 248 //------------------------------------------------------------------------ 249 // find_if 250 //------------------------------------------------------------------------ 251 252 template
253 _ForwardIterator __brick_find_if(_ForwardIterator, _ForwardIterator, _Predicate, 254 /*is_vector=*/std::false_type) noexcept; 255 256 template
257 _RandomAccessIterator __brick_find_if(_RandomAccessIterator, _RandomAccessIterator, _Predicate, 258 /*is_vector=*/std::true_type) noexcept; 259 260 template
261 _ForwardIterator 262 __pattern_find_if(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Predicate, _IsVector, 263 /*is_parallel=*/std::false_type) noexcept; 264 265 template
266 _ForwardIterator 267 __pattern_find_if(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Predicate, _IsVector, 268 /*is_parallel=*/std::true_type); 269 270 //------------------------------------------------------------------------ 271 // find_end 272 //------------------------------------------------------------------------ 273 274 template
275 _ForwardIterator1 __brick_find_end(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 276 _BinaryPredicate, 277 /*__is_vector=*/std::false_type) noexcept; 278 279 template
280 _ForwardIterator1 __brick_find_end(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 281 _BinaryPredicate, 282 /*__is_vector=*/std::true_type) noexcept; 283 284 template
286 _ForwardIterator1 287 __pattern_find_end(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 288 _BinaryPredicate, _IsVector, 289 /*is_parallel=*/std::false_type) noexcept; 290 291 template
293 _ForwardIterator1 294 __pattern_find_end(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 295 _BinaryPredicate, _IsVector, 296 /*is_parallel=*/std::true_type) noexcept; 297 298 //------------------------------------------------------------------------ 299 // find_first_of 300 //------------------------------------------------------------------------ 301 302 template
303 _ForwardIterator1 __brick_find_first_of(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 304 _BinaryPredicate, 305 /*__is_vector=*/std::false_type) noexcept; 306 307 template
308 _ForwardIterator1 __brick_find_first_of(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 309 _BinaryPredicate, 310 /*__is_vector=*/std::true_type) noexcept; 311 312 template
314 _ForwardIterator1 315 __pattern_find_first_of(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 316 _BinaryPredicate, _IsVector, /*is_parallel=*/std::false_type) noexcept; 317 318 template
320 _ForwardIterator1 321 __pattern_find_first_of(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 322 _BinaryPredicate, _IsVector, /*is_parallel=*/std::true_type) noexcept; 323 324 //------------------------------------------------------------------------ 325 // search 326 //------------------------------------------------------------------------ 327 328 template
329 _ForwardIterator1 __brick_search(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 330 _BinaryPredicate, 331 /*vector=*/std::false_type) noexcept; 332 333 template
334 _ForwardIterator1 __brick_search(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 335 _BinaryPredicate, 336 /*vector=*/std::true_type) noexcept; 337 338 template
340 _ForwardIterator1 341 __pattern_search(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 342 _BinaryPredicate, _IsVector, 343 /*is_parallel=*/std::false_type) noexcept; 344 345 template
347 _ForwardIterator1 348 __pattern_search(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 349 _BinaryPredicate, _IsVector, 350 /*is_parallel=*/std::true_type) noexcept; 351 352 //------------------------------------------------------------------------ 353 // search_n 354 //------------------------------------------------------------------------ 355 356 template
357 _ForwardIterator 358 __brick_search_n(_ForwardIterator, _ForwardIterator, _Size, const _Tp&, _BinaryPredicate, 359 /*vector=*/std::false_type) noexcept; 360 361 template
362 _ForwardIterator 363 __brick_search_n(_ForwardIterator, _ForwardIterator, _Size, const _Tp&, _BinaryPredicate, 364 /*vector=*/std::true_type) noexcept; 365 366 template
368 _ForwardIterator 369 __pattern_search_n(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Size, const _Tp&, _BinaryPredicate, 370 IsVector, 371 /*is_parallel=*/std::false_type) noexcept; 372 373 template
375 _RandomAccessIterator 376 __pattern_search_n(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Size, const _Tp&, 377 _BinaryPredicate, IsVector, 378 /*is_parallel=*/std::true_type) noexcept; 379 380 //------------------------------------------------------------------------ 381 // copy_n 382 //------------------------------------------------------------------------ 383 384 template
385 _OutputIterator __brick_copy_n(_ForwardIterator, _Size, _OutputIterator, 386 /*vector=*/std::false_type) noexcept; 387 388 template
389 _OutputIterator __brick_copy_n(_ForwardIterator, _Size, _OutputIterator, 390 /*vector=*/std::true_type) noexcept; 391 392 //------------------------------------------------------------------------ 393 // copy 394 //------------------------------------------------------------------------ 395 396 template
397 _OutputIterator __brick_copy(_ForwardIterator, _ForwardIterator, _OutputIterator, 398 /*vector=*/std::false_type) noexcept; 399 400 template
401 _OutputIterator __brick_copy(_RandomAccessIterator, _RandomAccessIterator, _OutputIterator, 402 /*vector=*/std::true_type) noexcept; 403 404 //------------------------------------------------------------------------ 405 // move 406 //------------------------------------------------------------------------ 407 408 template
409 _OutputIterator __brick_move(_ForwardIterator, _ForwardIterator, _OutputIterator, 410 /*vector=*/std::false_type) noexcept; 411 412 template
413 _OutputIterator __brick_move(_RandomAccessIterator, _RandomAccessIterator, _OutputIterator, 414 /*vector=*/std::true_type) noexcept; 415 416 //------------------------------------------------------------------------ 417 // swap_ranges 418 //------------------------------------------------------------------------ 419 template
420 _OutputIterator 421 __brick_swap_ranges(_ForwardIterator __first, _ForwardIterator __last, _OutputIterator __result, 422 /*vector=*/std::false_type) noexcept; 423 424 template
425 _OutputIterator 426 __brick_swap_ranges(_ForwardIterator __first, _ForwardIterator __last, _OutputIterator __result, 427 /*vector=*/std::true_type) noexcept; 428 429 //------------------------------------------------------------------------ 430 // copy_if 431 //------------------------------------------------------------------------ 432 433 template
434 _OutputIterator __brick_copy_if(_ForwardIterator, _ForwardIterator, _OutputIterator, _UnaryPredicate, 435 /*vector=*/std::false_type) noexcept; 436 437 template
438 _OutputIterator __brick_copy_if(_ForwardIterator, _ForwardIterator, _OutputIterator, _UnaryPredicate, 439 /*vector=*/std::true_type) noexcept; 440 441 template
442 std::pair<_DifferenceType, _DifferenceType> 443 __brick_calc_mask_1(_ForwardIterator, _ForwardIterator, bool* __restrict, _UnaryPredicate, 444 /*vector=*/std::false_type) noexcept; 445 template
446 std::pair<_DifferenceType, _DifferenceType> 447 __brick_calc_mask_1(_RandomAccessIterator, _RandomAccessIterator, bool* __restrict, _UnaryPredicate, 448 /*vector=*/std::true_type) noexcept; 449 450 template
451 void 452 __brick_copy_by_mask(_ForwardIterator, _ForwardIterator, _OutputIterator, bool*, 453 /*vector=*/std::false_type) noexcept; 454 455 template
456 void 457 __brick_copy_by_mask(_ForwardIterator, _ForwardIterator, _OutputIterator, bool* __restrict, 458 /*vector=*/std::true_type) noexcept; 459 460 template
461 void 462 __brick_partition_by_mask(_ForwardIterator, _ForwardIterator, _OutputIterator1, _OutputIterator2, bool*, 463 /*vector=*/std::false_type) noexcept; 464 465 template
466 void 467 __brick_partition_by_mask(_RandomAccessIterator, _RandomAccessIterator, _OutputIterator1, _OutputIterator2, bool*, 468 /*vector=*/std::true_type) noexcept; 469 470 template
471 _OutputIterator 472 __pattern_copy_if(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _OutputIterator, _UnaryPredicate, _IsVector, 473 /*parallel=*/std::false_type) noexcept; 474 475 template
477 _OutputIterator 478 __pattern_copy_if(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _OutputIterator, _UnaryPredicate, 479 _IsVector, /*parallel=*/std::true_type); 480 481 //------------------------------------------------------------------------ 482 // count 483 //------------------------------------------------------------------------ 484 485 template
486 typename std::iterator_traits<_ForwardIterator>::difference_type 487 __brick_count(_ForwardIterator, _ForwardIterator, _Predicate, 488 /* is_vector = */ std::true_type) noexcept; 489 490 template
491 typename std::iterator_traits<_ForwardIterator>::difference_type 492 __brick_count(_ForwardIterator, _ForwardIterator, _Predicate, 493 /* is_vector = */ std::false_type) noexcept; 494 495 template
496 typename std::iterator_traits<_ForwardIterator>::difference_type 497 __pattern_count(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Predicate, 498 /* is_parallel */ std::false_type, _IsVector) noexcept; 499 500 template
501 typename std::iterator_traits<_ForwardIterator>::difference_type 502 __pattern_count(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Predicate, 503 /* is_parallel */ std::true_type, _IsVector); 504 505 //------------------------------------------------------------------------ 506 // unique 507 //------------------------------------------------------------------------ 508 509 template
510 _ForwardIterator __brick_unique(_ForwardIterator, _ForwardIterator, _BinaryPredicate, 511 /*is_vector=*/std::false_type) noexcept; 512 513 template
514 _ForwardIterator __brick_unique(_ForwardIterator, _ForwardIterator, _BinaryPredicate, 515 /*is_vector=*/std::true_type) noexcept; 516 517 template
518 _ForwardIterator 519 __pattern_unique(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _BinaryPredicate, _IsVector, 520 /*is_parallel=*/std::false_type) noexcept; 521 522 template
523 _ForwardIterator 524 __pattern_unique(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _BinaryPredicate, _IsVector, 525 /*is_parallel=*/std::true_type) noexcept; 526 527 //------------------------------------------------------------------------ 528 // unique_copy 529 //------------------------------------------------------------------------ 530 531 template
532 OutputIterator __brick_unique_copy(_ForwardIterator, _ForwardIterator, OutputIterator, _BinaryPredicate, 533 /*vector=*/std::false_type) noexcept; 534 535 template
536 _OutputIterator __brick_unique_copy(_RandomAccessIterator, _RandomAccessIterator, _OutputIterator, _BinaryPredicate, 537 /*vector=*/std::true_type) noexcept; 538 539 template
541 _OutputIterator 542 __pattern_unique_copy(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _OutputIterator, _BinaryPredicate, 543 _IsVector, /*parallel=*/std::false_type) noexcept; 544 545 template
546 _DifferenceType 547 __brick_calc_mask_2(_RandomAccessIterator, _RandomAccessIterator, bool* __restrict, _BinaryPredicate, 548 /*vector=*/std::false_type) noexcept; 549 550 template
551 _DifferenceType 552 __brick_calc_mask_2(_RandomAccessIterator, _RandomAccessIterator, bool* __restrict, _BinaryPredicate, 553 /*vector=*/std::true_type) noexcept; 554 555 template
557 _OutputIterator 558 __pattern_unique_copy(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _OutputIterator, 559 _BinaryPredicate, _IsVector, /*parallel=*/std::true_type); 560 561 //------------------------------------------------------------------------ 562 // reverse 563 //------------------------------------------------------------------------ 564 565 template
566 void __brick_reverse(_BidirectionalIterator, _BidirectionalIterator, 567 /*__is_vector=*/std::false_type) noexcept; 568 569 template
570 void __brick_reverse(_BidirectionalIterator, _BidirectionalIterator, 571 /*__is_vector=*/std::true_type) noexcept; 572 573 template
574 void __brick_reverse(_BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, 575 /*is_vector=*/std::false_type) noexcept; 576 577 template
578 void __brick_reverse(_BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, 579 /*is_vector=*/std::true_type) noexcept; 580 581 template
582 void 583 __pattern_reverse(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _IsVector, 584 /*is_parallel=*/std::false_type) noexcept; 585 586 template
587 void 588 __pattern_reverse(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _IsVector, 589 /*is_parallel=*/std::true_type); 590 591 //------------------------------------------------------------------------ 592 // reverse_copy 593 //------------------------------------------------------------------------ 594 595 template
596 _OutputIterator __brick_reverse_copy(_BidirectionalIterator, _BidirectionalIterator, _OutputIterator, 597 /*is_vector=*/std::false_type) noexcept; 598 599 template
600 _OutputIterator __brick_reverse_copy(_BidirectionalIterator, _BidirectionalIterator, _OutputIterator, 601 /*is_vector=*/std::true_type) noexcept; 602 603 template
604 _OutputIterator 605 __pattern_reverse_copy(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _OutputIterator, _IsVector, 606 /*is_parallel=*/std::false_type) noexcept; 607 608 template
609 _OutputIterator 610 __pattern_reverse_copy(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _OutputIterator, _IsVector, 611 /*is_parallel=*/std::true_type); 612 613 //------------------------------------------------------------------------ 614 // rotate 615 //------------------------------------------------------------------------ 616 617 template
618 _ForwardIterator __brick_rotate(_ForwardIterator, _ForwardIterator, _ForwardIterator, 619 /*is_vector=*/std::false_type) noexcept; 620 621 template
622 _ForwardIterator __brick_rotate(_ForwardIterator, _ForwardIterator, _ForwardIterator, 623 /*is_vector=*/std::true_type) noexcept; 624 625 template
626 _ForwardIterator 627 __pattern_rotate(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _ForwardIterator, _IsVector, 628 /*is_parallel=*/std::false_type) noexcept; 629 630 template
631 _ForwardIterator 632 __pattern_rotate(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _ForwardIterator, _IsVector, 633 /*is_parallel=*/std::true_type); 634 635 //------------------------------------------------------------------------ 636 // rotate_copy 637 //------------------------------------------------------------------------ 638 639 template
640 _OutputIterator __brick_rotate_copy(_ForwardIterator, _ForwardIterator, _ForwardIterator, _OutputIterator, 641 /*__is_vector=*/std::false_type) noexcept; 642 643 template
644 _OutputIterator __brick_rotate_copy(_ForwardIterator, _ForwardIterator, _ForwardIterator, _OutputIterator, 645 /*__is_vector=*/std::true_type) noexcept; 646 647 template
648 _OutputIterator 649 __pattern_rotate_copy(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _ForwardIterator, _OutputIterator, 650 _IsVector, 651 /*is_parallel=*/std::false_type) noexcept; 652 653 template
654 _OutputIterator 655 __pattern_rotate_copy(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _ForwardIterator, _OutputIterator, 656 _IsVector, 657 /*is_parallel=*/std::true_type); 658 659 //------------------------------------------------------------------------ 660 // is_partitioned 661 //------------------------------------------------------------------------ 662 663 template
664 bool __brick_is_partitioned(_ForwardIterator, _ForwardIterator, _UnaryPredicate, 665 /*is_vector=*/std::false_type) noexcept; 666 667 template
668 bool __brick_is_partitioned(_ForwardIterator, _ForwardIterator, _UnaryPredicate, 669 /*is_vector=*/std::true_type) noexcept; 670 671 template
672 bool 673 __pattern_is_partitioned(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _UnaryPredicate, _IsVector, 674 /*is_parallel=*/std::false_type) noexcept; 675 676 template
677 bool 678 __pattern_is_partitioned(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _UnaryPredicate, _IsVector, 679 /*is_parallel=*/std::true_type); 680 681 //------------------------------------------------------------------------ 682 // partition 683 //------------------------------------------------------------------------ 684 685 template
686 _ForwardIterator __brick_partition(_ForwardIterator, _ForwardIterator, _UnaryPredicate, 687 /*is_vector=*/std::false_type) noexcept; 688 689 template
690 _ForwardIterator __brick_partition(_ForwardIterator, _ForwardIterator, _UnaryPredicate, 691 /*is_vector=*/std::true_type) noexcept; 692 693 template
694 _ForwardIterator 695 __pattern_partition(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _UnaryPredicate, _IsVector, 696 /*is_parallel=*/std::false_type) noexcept; 697 698 template
699 _ForwardIterator 700 __pattern_partition(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _UnaryPredicate, _IsVector, 701 /*is_parallel=*/std::true_type); 702 703 //------------------------------------------------------------------------ 704 // stable_partition 705 //------------------------------------------------------------------------ 706 707 template
708 _BidirectionalIterator __brick_stable_partition(_BidirectionalIterator, _BidirectionalIterator, _UnaryPredicate, 709 /*__is_vector=*/std::false_type) noexcept; 710 711 template
712 _BidirectionalIterator __brick_stable_partition(_BidirectionalIterator, _BidirectionalIterator, _UnaryPredicate, 713 /*__is_vector=*/std::true_type) noexcept; 714 715 template
716 _BidirectionalIterator 717 __pattern_stable_partition(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _UnaryPredicate, 718 _IsVector, 719 /*is_parallelization=*/std::false_type) noexcept; 720 721 template
722 _BidirectionalIterator 723 __pattern_stable_partition(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _UnaryPredicate, 724 _IsVector, 725 /*is_parallelization=*/std::true_type) noexcept; 726 727 //------------------------------------------------------------------------ 728 // partition_copy 729 //------------------------------------------------------------------------ 730 731 template
732 std::pair<_OutputIterator1, _OutputIterator2> 733 __brick_partition_copy(_ForwardIterator, _ForwardIterator, _OutputIterator1, _OutputIterator2, _UnaryPredicate, 734 /*is_vector=*/std::false_type) noexcept; 735 736 template
737 std::pair<_OutputIterator1, _OutputIterator2> 738 __brick_partition_copy(_ForwardIterator, _ForwardIterator, _OutputIterator1, _OutputIterator2, _UnaryPredicate, 739 /*is_vector=*/std::true_type) noexcept; 740 741 template
743 std::pair<_OutputIterator1, _OutputIterator2> 744 __pattern_partition_copy(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _OutputIterator1, _OutputIterator2, 745 _UnaryPredicate, _IsVector, 746 /*is_parallelization=*/std::false_type) noexcept; 747 748 template
750 std::pair<_OutputIterator1, _OutputIterator2> 751 __pattern_partition_copy(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _OutputIterator1, 752 _OutputIterator2, _UnaryPredicate, _IsVector, 753 /*is_parallelization=*/std::true_type); 754 755 //------------------------------------------------------------------------ 756 // sort 757 //------------------------------------------------------------------------ 758 759 template
761 void 762 __pattern_sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, _IsVector /*is_vector*/, 763 /*is_parallel=*/std::false_type, _IsMoveConstructible) noexcept; 764 765 template
766 void 767 __pattern_sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, _IsVector /*is_vector*/, 768 /*is_parallel=*/std::true_type, 769 /*is_move_constructible=*/std::true_type); 770 771 //------------------------------------------------------------------------ 772 // stable_sort 773 //------------------------------------------------------------------------ 774 775 template
776 void 777 __pattern_stable_sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, 778 _IsVector /*is_vector*/, 779 /*is_parallel=*/std::false_type) noexcept; 780 781 template
782 void 783 __pattern_stable_sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, 784 _IsVector /*is_vector*/, 785 /*is_parallel=*/std::true_type); 786 787 //------------------------------------------------------------------------ 788 // partial_sort 789 //------------------------------------------------------------------------ 790 791 template
792 void 793 __pattern_partial_sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, 794 _Compare, _IsVector, 795 /*is_parallel=*/std::false_type) noexcept; 796 797 template
798 void 799 __pattern_partial_sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, 800 _Compare, _IsVector, 801 /*is_parallel=*/std::true_type); 802 803 //------------------------------------------------------------------------ 804 // partial_sort_copy 805 //------------------------------------------------------------------------ 806 807 template
808 _RandomAccessIterator 809 __pattern_partial_sort_copy(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _RandomAccessIterator, 810 _RandomAccessIterator, _Compare, _IsVector, 811 /*is_parallel=*/std::false_type) noexcept; 812 813 template
814 _RandomAccessIterator 815 __pattern_partial_sort_copy(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _RandomAccessIterator, 816 _RandomAccessIterator, _Compare, _IsVector, 817 /*is_parallel=*/std::true_type); 818 819 //------------------------------------------------------------------------ 820 // adjacent_find 821 //------------------------------------------------------------------------ 822 823 template
824 _ForwardIterator 825 __brick_adjacent_find(_ForwardIterator, _ForwardIterator, _BinaryPredicate, 826 /* IsVector = */ std::true_type, bool) noexcept; 827 828 template
829 _ForwardIterator 830 __brick_adjacent_find(_ForwardIterator, _ForwardIterator, _BinaryPredicate, 831 /* IsVector = */ std::false_type, bool) noexcept; 832 833 template
834 _ForwardIterator 835 __pattern_adjacent_find(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _BinaryPredicate, 836 /* is_parallel */ std::false_type, _IsVector, bool) noexcept; 837 838 template
839 _RandomAccessIterator 840 __pattern_adjacent_find(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _BinaryPredicate, 841 /* is_parallel */ std::true_type, _IsVector, bool); 842 843 //------------------------------------------------------------------------ 844 // nth_element 845 //------------------------------------------------------------------------ 846 template
847 void 848 __pattern_nth_element(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare, 849 _IsVector, 850 /*is_parallel=*/std::false_type) noexcept; 851 852 template
853 void 854 __pattern_nth_element(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare, 855 _IsVector, 856 /*is_parallel=*/std::true_type) noexcept; 857 858 //------------------------------------------------------------------------ 859 // fill, fill_n 860 //------------------------------------------------------------------------ 861 template
862 void 863 __brick_fill(_ForwardIterator, _ForwardIterator, const _Tp&, 864 /* __is_vector = */ std::true_type) noexcept; 865 866 template
867 void 868 __brick_fill(_ForwardIterator, _ForwardIterator, const _Tp&, 869 /* __is_vector = */ std::false_type) noexcept; 870 871 template
872 void 873 __pattern_fill(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, const _Tp&, 874 /*is_parallel=*/std::false_type, _IsVector) noexcept; 875 876 template
877 _ForwardIterator 878 __pattern_fill(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, const _Tp&, 879 /*is_parallel=*/std::true_type, _IsVector); 880 881 template
882 _OutputIterator 883 __brick_fill_n(_OutputIterator, _Size, const _Tp&, 884 /* __is_vector = */ std::true_type) noexcept; 885 886 template
887 _OutputIterator 888 __brick_fill_n(_OutputIterator, _Size, const _Tp&, 889 /* __is_vector = */ std::false_type) noexcept; 890 891 template
892 _OutputIterator 893 __pattern_fill_n(_ExecutionPolicy&&, _OutputIterator, _Size, const _Tp&, 894 /*is_parallel=*/std::false_type, _IsVector) noexcept; 895 896 template
897 _OutputIterator 898 __pattern_fill_n(_ExecutionPolicy&&, _OutputIterator, _Size, const _Tp&, 899 /*is_parallel=*/std::true_type, _IsVector); 900 901 //------------------------------------------------------------------------ 902 // generate, generate_n 903 //------------------------------------------------------------------------ 904 905 template
906 void __brick_generate(_RandomAccessIterator, _RandomAccessIterator, _Generator, 907 /* is_vector = */ std::true_type) noexcept; 908 909 template
910 void __brick_generate(_ForwardIterator, _ForwardIterator, _Generator, 911 /* is_vector = */ std::false_type) noexcept; 912 913 template
914 void 915 __pattern_generate(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Generator, 916 /*is_parallel=*/std::false_type, _IsVector) noexcept; 917 918 template
919 _ForwardIterator 920 __pattern_generate(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Generator, 921 /*is_parallel=*/std::true_type, _IsVector); 922 923 template
924 OutputIterator __brick_generate_n(OutputIterator, Size, _Generator, 925 /* is_vector = */ std::true_type) noexcept; 926 927 template
928 OutputIterator __brick_generate_n(OutputIterator, Size, _Generator, 929 /* is_vector = */ std::false_type) noexcept; 930 931 template
932 OutputIterator 933 __pattern_generate_n(_ExecutionPolicy&&, OutputIterator, Size, _Generator, 934 /*is_parallel=*/std::false_type, _IsVector) noexcept; 935 936 template
937 OutputIterator 938 __pattern_generate_n(_ExecutionPolicy&&, OutputIterator, Size, _Generator, 939 /*is_parallel=*/std::true_type, _IsVector); 940 941 //------------------------------------------------------------------------ 942 // remove 943 //------------------------------------------------------------------------ 944 template
945 _ForwardIterator __brick_remove_if(_ForwardIterator, _ForwardIterator, _UnaryPredicate, 946 /* __is_vector = */ std::false_type) noexcept; 947 948 template
949 _RandomAccessIterator __brick_remove_if(_RandomAccessIterator, _RandomAccessIterator, _UnaryPredicate, 950 /* __is_vector = */ std::true_type) noexcept; 951 952 template
953 _ForwardIterator 954 __pattern_remove_if(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _UnaryPredicate, _IsVector, 955 /*is_parallel*/ std::false_type) noexcept; 956 957 template
958 _ForwardIterator 959 __pattern_remove_if(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _UnaryPredicate, _IsVector, 960 /*is_parallel*/ std::true_type) noexcept; 961 962 //------------------------------------------------------------------------ 963 // merge 964 //------------------------------------------------------------------------ 965 966 template
967 _OutputIterator __brick_merge(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 968 _OutputIterator, _Compare, 969 /* __is_vector = */ std::false_type) noexcept; 970 971 template
972 _OutputIterator __brick_merge(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 973 _OutputIterator, _Compare, 974 /* __is_vector = */ std::true_type) noexcept; 975 976 template
978 _OutputIterator 979 __pattern_merge(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 980 _OutputIterator, _Compare, _IsVector, /* is_parallel = */ std::false_type) noexcept; 981 982 template
984 _OutputIterator 985 __pattern_merge(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 986 _RandomAccessIterator2, _OutputIterator, _Compare, _IsVector, 987 /* is_parallel = */ std::true_type); 988 989 //------------------------------------------------------------------------ 990 // inplace_merge 991 //------------------------------------------------------------------------ 992 993 template
994 void __brick_inplace_merge(_BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, _Compare, 995 /* __is_vector = */ std::false_type) noexcept; 996 997 template
998 void __brick_inplace_merge(_BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, _Compare, 999 /* __is_vector = */ std::true_type) noexcept; 1000 1001 template
1002 void 1003 __pattern_inplace_merge(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, 1004 _Compare, _IsVector, 1005 /* is_parallel = */ std::false_type) noexcept; 1006 1007 template
1008 void 1009 __pattern_inplace_merge(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, 1010 _Compare, _IsVector, 1011 /*is_parallel=*/std::true_type); 1012 1013 //------------------------------------------------------------------------ 1014 // includes 1015 //------------------------------------------------------------------------ 1016 1017 template
1018 bool 1019 __pattern_includes(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1020 _Compare, _IsVector, 1021 /*is_parallel=*/std::false_type) noexcept; 1022 1023 template
1024 bool 1025 __pattern_includes(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1026 _Compare, _IsVector, 1027 /*is_parallel=*/std::true_type); 1028 1029 //------------------------------------------------------------------------ 1030 // set_union 1031 //------------------------------------------------------------------------ 1032 1033 template
1034 _OutputIterator __brick_set_union(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1035 _OutputIterator, _Compare, 1036 /*__is_vector=*/std::false_type) noexcept; 1037 1038 template
1039 _OutputIterator __brick_set_union(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1040 _OutputIterator, _Compare, 1041 /*__is_vector=*/std::true_type) noexcept; 1042 1043 template
1045 _OutputIterator 1046 __pattern_set_union(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1047 _OutputIterator, _Compare, _IsVector, /*is_parallel=*/std::false_type) noexcept; 1048 1049 template
1051 _OutputIterator 1052 __pattern_set_union(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1053 _OutputIterator, _Compare, _IsVector, /*is_parallel=*/std::true_type); 1054 1055 //------------------------------------------------------------------------ 1056 // set_intersection 1057 //------------------------------------------------------------------------ 1058 1059 template
1060 _OutputIterator __brick_set_intersection(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1061 _OutputIterator, _Compare, 1062 /*__is_vector=*/std::false_type) noexcept; 1063 1064 template
1065 _OutputIterator __brick_set_intersection(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1066 _OutputIterator, _Compare, 1067 /*__is_vector=*/std::true_type) noexcept; 1068 1069 template
1071 _OutputIterator 1072 __pattern_set_intersection(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1073 _ForwardIterator2, _OutputIterator, _Compare, _IsVector, 1074 /*is_parallel=*/std::false_type) noexcept; 1075 1076 template
1078 _OutputIterator 1079 __pattern_set_intersection(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1080 _ForwardIterator2, _OutputIterator, _Compare, _IsVector, /*is_parallel=*/std::true_type); 1081 1082 //------------------------------------------------------------------------ 1083 // set_difference 1084 //------------------------------------------------------------------------ 1085 1086 template
1087 _OutputIterator __brick_set_difference(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1088 _OutputIterator, _Compare, 1089 /*__is_vector=*/std::false_type) noexcept; 1090 1091 template
1092 _OutputIterator __brick_set_difference(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1093 _OutputIterator, _Compare, 1094 /*__is_vector=*/std::true_type) noexcept; 1095 1096 template
1098 _OutputIterator 1099 __pattern_set_difference(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1100 _OutputIterator, _Compare, _IsVector, /*is_parallel=*/std::false_type) noexcept; 1101 1102 template
1104 _OutputIterator 1105 __pattern_set_difference(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1106 _OutputIterator, _Compare, _IsVector, /*is_parallel=*/std::true_type); 1107 1108 //------------------------------------------------------------------------ 1109 // set_symmetric_difference 1110 //------------------------------------------------------------------------ 1111 1112 template
1113 _OutputIterator __brick_set_symmetric_difference(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1114 _ForwardIterator2, _OutputIterator, _Compare, 1115 /*__is_vector=*/std::false_type) noexcept; 1116 1117 template
1118 _OutputIterator __brick_set_symmetric_difference(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1119 _ForwardIterator2, _OutputIterator, _Compare, 1120 /*__is_vector=*/std::true_type) noexcept; 1121 1122 template
1124 _OutputIterator 1125 __pattern_set_symmetric_difference(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1126 _ForwardIterator2, _OutputIterator, _Compare, _IsVector, 1127 /*is_parallel=*/std::false_type) noexcept; 1128 1129 template
1131 _OutputIterator 1132 __pattern_set_symmetric_difference(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1133 _ForwardIterator2, _OutputIterator, _Compare, _IsVector, 1134 /*is_parallel=*/std::true_type); 1135 1136 //------------------------------------------------------------------------ 1137 // is_heap_until 1138 //------------------------------------------------------------------------ 1139 1140 template
1141 _RandomAccessIterator __brick_is_heap_until(_RandomAccessIterator, _RandomAccessIterator, _Compare, 1142 /* __is_vector = */ std::false_type) noexcept; 1143 1144 template
1145 _RandomAccessIterator __brick_is_heap_until(_RandomAccessIterator, _RandomAccessIterator, _Compare, 1146 /* __is_vector = */ std::true_type) noexcept; 1147 1148 template
1149 _RandomAccessIterator 1150 __pattern_is_heap_until(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, _IsVector, 1151 /* is_parallel = */ std::false_type) noexcept; 1152 1153 template
1154 _RandomAccessIterator 1155 __pattern_is_heap_until(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, _IsVector, 1156 /* is_parallel = */ std::true_type) noexcept; 1157 1158 //------------------------------------------------------------------------ 1159 // min_element 1160 //------------------------------------------------------------------------ 1161 1162 template
1163 _ForwardIterator __brick_min_element(_ForwardIterator, _ForwardIterator, _Compare, 1164 /* __is_vector = */ std::false_type) noexcept; 1165 1166 template
1167 _ForwardIterator __brick_min_element(_ForwardIterator, _ForwardIterator, _Compare, 1168 /* __is_vector = */ std::true_type) noexcept; 1169 1170 template
1171 _ForwardIterator 1172 __pattern_min_element(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Compare, _IsVector, 1173 /* is_parallel = */ std::false_type) noexcept; 1174 1175 template
1176 _RandomAccessIterator 1177 __pattern_min_element(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, _IsVector, 1178 /* is_parallel = */ std::true_type); 1179 1180 //------------------------------------------------------------------------ 1181 // minmax_element 1182 //------------------------------------------------------------------------ 1183 1184 template
1185 std::pair<_ForwardIterator, _ForwardIterator> __brick_minmax_element(_ForwardIterator, _ForwardIterator, _Compare, 1186 /* __is_vector = */ std::false_type) noexcept; 1187 1188 template
1189 std::pair<_ForwardIterator, _ForwardIterator> __brick_minmax_element(_ForwardIterator, _ForwardIterator, _Compare, 1190 /* __is_vector = */ std::true_type) noexcept; 1191 1192 template
1193 std::pair<_ForwardIterator, _ForwardIterator> 1194 __pattern_minmax_element(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Compare, _IsVector, 1195 /* is_parallel = */ std::false_type) noexcept; 1196 1197 template
1198 std::pair<_ForwardIterator, _ForwardIterator> 1199 __pattern_minmax_element(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Compare, _IsVector, 1200 /* is_parallel = */ std::true_type); 1201 1202 //------------------------------------------------------------------------ 1203 // mismatch 1204 //------------------------------------------------------------------------ 1205 1206 template
1207 std::pair<_ForwardIterator1, _ForwardIterator2> __brick_mismatch(_ForwardIterator1, _ForwardIterator1, 1208 _ForwardIterator2, _ForwardIterator2, _Predicate, 1209 /* __is_vector = */ std::false_type) noexcept; 1210 1211 template
1212 std::pair<_ForwardIterator1, _ForwardIterator2> __brick_mismatch(_ForwardIterator1, _ForwardIterator1, 1213 _ForwardIterator2, _ForwardIterator2, _Predicate, 1214 /* __is_vector = */ std::true_type) noexcept; 1215 1216 template
1217 std::pair<_ForwardIterator1, _ForwardIterator2> 1218 __pattern_mismatch(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1219 _Predicate, _IsVector, 1220 /* is_parallel = */ std::false_type) noexcept; 1221 1222 template
1224 std::pair<_RandomAccessIterator1, _RandomAccessIterator2> 1225 __pattern_mismatch(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 1226 _RandomAccessIterator2, _Predicate, _IsVector, /* is_parallel = */ std::true_type) noexcept; 1227 1228 //------------------------------------------------------------------------ 1229 // lexicographical_compare 1230 //------------------------------------------------------------------------ 1231 1232 template
1233 bool __brick_lexicographical_compare(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1234 _Compare, 1235 /* __is_vector = */ std::false_type) noexcept; 1236 1237 template
1238 bool __brick_lexicographical_compare(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1239 _Compare, 1240 /* __is_vector = */ std::true_type) noexcept; 1241 1242 template
1243 bool 1244 __pattern_lexicographical_compare(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1245 _ForwardIterator2, _Compare, _IsVector, /* is_parallel = */ std::false_type) noexcept; 1246 1247 template
1248 bool 1249 __pattern_lexicographical_compare(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1250 _ForwardIterator2, _Compare, _IsVector, /* is_parallel = */ std::true_type) noexcept; 1251 1252 } // namespace __internal 1253 } // namespace __pstl 1254 #endif /* _PSTL_ALGORITHM_FWD_H */
Contact us
|
About us
|
Term of use
|
Copyright © 2000-2025 MyWebUniversity.com ™