1627f7eb2Smrg // -*- C++ -*- 2627f7eb2Smrg //===-- algorithm_fwd.h --------------------------------------------------===// 3627f7eb2Smrg // 4627f7eb2Smrg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5627f7eb2Smrg // See https://llvm.org/LICENSE.txt for license information. 6627f7eb2Smrg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7627f7eb2Smrg // 8627f7eb2Smrg //===----------------------------------------------------------------------===// 9627f7eb2Smrg 10*4c3eb207Smrg #ifndef _PSTL_ALGORITHM_FWD_H 11*4c3eb207Smrg #define _PSTL_ALGORITHM_FWD_H 12627f7eb2Smrg 13627f7eb2Smrg #include <type_traits> 14627f7eb2Smrg #include <utility> 15627f7eb2Smrg 16627f7eb2Smrg namespace __pstl 17627f7eb2Smrg { 18627f7eb2Smrg namespace __internal 19627f7eb2Smrg { 20627f7eb2Smrg 21627f7eb2Smrg //------------------------------------------------------------------------ 22627f7eb2Smrg // any_of 23627f7eb2Smrg //------------------------------------------------------------------------ 24627f7eb2Smrg 25627f7eb2Smrg template <class _ForwardIterator, class _Pred> 26627f7eb2Smrg bool 27627f7eb2Smrg __brick_any_of(const _ForwardIterator, const _ForwardIterator, _Pred, 28627f7eb2Smrg /*__is_vector=*/std::false_type) noexcept; 29627f7eb2Smrg 30627f7eb2Smrg template <class _ForwardIterator, class _Pred> 31627f7eb2Smrg bool 32627f7eb2Smrg __brick_any_of(const _ForwardIterator, const _ForwardIterator, _Pred, 33627f7eb2Smrg /*__is_vector=*/std::true_type) noexcept; 34627f7eb2Smrg 35627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Pred, class _IsVector> 36627f7eb2Smrg bool 37627f7eb2Smrg __pattern_any_of(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Pred, _IsVector, 38627f7eb2Smrg /*parallel=*/std::false_type) noexcept; 39627f7eb2Smrg 40627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Pred, class _IsVector> 41627f7eb2Smrg bool 42627f7eb2Smrg __pattern_any_of(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Pred, _IsVector, 43627f7eb2Smrg /*parallel=*/std::true_type); 44627f7eb2Smrg 45627f7eb2Smrg //------------------------------------------------------------------------ 46627f7eb2Smrg // walk1 (pseudo) 47627f7eb2Smrg // 48627f7eb2Smrg // walk1 evaluates f(x) for each dereferenced value x drawn from [first,last) 49627f7eb2Smrg //------------------------------------------------------------------------ 50627f7eb2Smrg 51627f7eb2Smrg template <class _ForwardIterator, class _Function> 52627f7eb2Smrg void __brick_walk1(_ForwardIterator, _ForwardIterator, _Function, 53627f7eb2Smrg /*vector=*/std::false_type) noexcept; 54627f7eb2Smrg 55627f7eb2Smrg template <class _RandomAccessIterator, class _Function> 56627f7eb2Smrg void __brick_walk1(_RandomAccessIterator, _RandomAccessIterator, _Function, 57627f7eb2Smrg /*vector=*/std::true_type) noexcept; 58627f7eb2Smrg 59627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Function, class _IsVector> 60627f7eb2Smrg void 61627f7eb2Smrg __pattern_walk1(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Function, _IsVector, 62627f7eb2Smrg /*parallel=*/std::false_type) noexcept; 63627f7eb2Smrg 64627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Function, class _IsVector> 65627f7eb2Smrg void 66627f7eb2Smrg __pattern_walk1(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Function, _IsVector, 67627f7eb2Smrg /*parallel=*/std::true_type); 68627f7eb2Smrg 69627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Brick> 70627f7eb2Smrg void 71627f7eb2Smrg __pattern_walk_brick(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Brick, 72627f7eb2Smrg /*parallel=*/std::false_type) noexcept; 73627f7eb2Smrg 74627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Brick> 75627f7eb2Smrg void 76627f7eb2Smrg __pattern_walk_brick(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Brick, 77627f7eb2Smrg /*parallel=*/std::true_type); 78627f7eb2Smrg 79627f7eb2Smrg //------------------------------------------------------------------------ 80627f7eb2Smrg // walk1_n 81627f7eb2Smrg //------------------------------------------------------------------------ 82627f7eb2Smrg 83627f7eb2Smrg template <class _ForwardIterator, class _Size, class _Function> 84627f7eb2Smrg _ForwardIterator __brick_walk1_n(_ForwardIterator, _Size, _Function, 85627f7eb2Smrg /*_IsVectorTag=*/std::false_type); 86627f7eb2Smrg 87627f7eb2Smrg template <class _RandomAccessIterator, class _DifferenceType, class _Function> 88627f7eb2Smrg _RandomAccessIterator __brick_walk1_n(_RandomAccessIterator, _DifferenceType, _Function, 89627f7eb2Smrg /*vectorTag=*/std::true_type) noexcept; 90627f7eb2Smrg 91627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Function, class _IsVector> 92627f7eb2Smrg _ForwardIterator 93627f7eb2Smrg __pattern_walk1_n(_ExecutionPolicy&&, _ForwardIterator, _Size, _Function, _IsVector, 94627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 95627f7eb2Smrg 96627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Size, class _Function, class _IsVector> 97627f7eb2Smrg _RandomAccessIterator 98627f7eb2Smrg __pattern_walk1_n(_ExecutionPolicy&&, _RandomAccessIterator, _Size, _Function, _IsVector, 99627f7eb2Smrg /*is_parallel=*/std::true_type); 100627f7eb2Smrg 101627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Brick> 102627f7eb2Smrg _ForwardIterator 103627f7eb2Smrg __pattern_walk_brick_n(_ExecutionPolicy&&, _ForwardIterator, _Size, _Brick, 104627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 105627f7eb2Smrg 106627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Size, class _Brick> 107627f7eb2Smrg _RandomAccessIterator 108627f7eb2Smrg __pattern_walk_brick_n(_ExecutionPolicy&&, _RandomAccessIterator, _Size, _Brick, 109627f7eb2Smrg /*is_parallel=*/std::true_type); 110627f7eb2Smrg 111627f7eb2Smrg //------------------------------------------------------------------------ 112627f7eb2Smrg // walk2 (pseudo) 113627f7eb2Smrg // 114627f7eb2Smrg // walk2 evaluates f(x,y) for deferenced values (x,y) drawn from [first1,last1) and [first2,...) 115627f7eb2Smrg //------------------------------------------------------------------------ 116627f7eb2Smrg 117627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _Function> 118627f7eb2Smrg _ForwardIterator2 __brick_walk2(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Function, 119627f7eb2Smrg /*vector=*/std::false_type) noexcept; 120627f7eb2Smrg 121627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _Function> 122627f7eb2Smrg _ForwardIterator2 __brick_walk2(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Function, 123627f7eb2Smrg /*vector=*/std::true_type) noexcept; 124627f7eb2Smrg 125627f7eb2Smrg template <class _ForwardIterator1, class _Size, class _ForwardIterator2, class _Function> 126627f7eb2Smrg _ForwardIterator2 __brick_walk2_n(_ForwardIterator1, _Size, _ForwardIterator2, _Function, 127627f7eb2Smrg /*vector=*/std::false_type) noexcept; 128627f7eb2Smrg 129627f7eb2Smrg template <class _ForwardIterator1, class _Size, class _ForwardIterator2, class _Function> 130627f7eb2Smrg _ForwardIterator2 __brick_walk2_n(_ForwardIterator1, _Size, _ForwardIterator2, _Function, 131627f7eb2Smrg /*vector=*/std::true_type) noexcept; 132627f7eb2Smrg 133627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Function, class _IsVector> 134627f7eb2Smrg _ForwardIterator2 135627f7eb2Smrg __pattern_walk2(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Function, _IsVector, 136627f7eb2Smrg /*parallel=*/std::false_type) noexcept; 137627f7eb2Smrg 138627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Function, class _IsVector> 139627f7eb2Smrg _ForwardIterator2 140627f7eb2Smrg __pattern_walk2(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Function, _IsVector, 141627f7eb2Smrg /*parallel=*/std::true_type); 142627f7eb2Smrg 143627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _Size, class _ForwardIterator2, class _Function, 144627f7eb2Smrg class _IsVector> 145627f7eb2Smrg _ForwardIterator2 146627f7eb2Smrg __pattern_walk2_n(_ExecutionPolicy&&, _ForwardIterator1, _Size, _ForwardIterator2, _Function, _IsVector, 147627f7eb2Smrg /*parallel=*/std::false_type) noexcept; 148627f7eb2Smrg 149627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator1, class _Size, class _RandomAccessIterator2, 150627f7eb2Smrg class _Function, class _IsVector> 151627f7eb2Smrg _RandomAccessIterator2 152627f7eb2Smrg __pattern_walk2_n(_ExecutionPolicy&&, _RandomAccessIterator1, _Size, _RandomAccessIterator2, _Function, _IsVector, 153627f7eb2Smrg /*parallel=*/std::true_type); 154627f7eb2Smrg 155627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Brick> 156627f7eb2Smrg _ForwardIterator2 157627f7eb2Smrg __pattern_walk2_brick(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Brick, 158627f7eb2Smrg /*parallel=*/std::false_type) noexcept; 159627f7eb2Smrg 160627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator1, class _RandomAccessIterator2, class _Brick> 161627f7eb2Smrg _RandomAccessIterator2 162627f7eb2Smrg __pattern_walk2_brick(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 163627f7eb2Smrg _Brick, 164627f7eb2Smrg /*parallel=*/std::true_type); 165627f7eb2Smrg 166627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _Size, class _ForwardIterator2, class _Brick> 167627f7eb2Smrg _ForwardIterator2 168627f7eb2Smrg __pattern_walk2_brick_n(_ExecutionPolicy&&, _ForwardIterator1, _Size, _ForwardIterator2, _Brick, 169627f7eb2Smrg /*parallel=*/std::false_type) noexcept; 170627f7eb2Smrg 171627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator1, class _Size, class _RandomAccessIterator2, class _Brick> 172627f7eb2Smrg _RandomAccessIterator2 173627f7eb2Smrg __pattern_walk2_brick_n(_ExecutionPolicy&&, _RandomAccessIterator1, _Size, _RandomAccessIterator2, _Brick, 174627f7eb2Smrg /*parallel=*/std::true_type); 175627f7eb2Smrg 176627f7eb2Smrg //------------------------------------------------------------------------ 177627f7eb2Smrg // walk3 (pseudo) 178627f7eb2Smrg // 179627f7eb2Smrg // walk3 evaluates f(x,y,z) for (x,y,z) drawn from [first1,last1), [first2,...), [first3,...) 180627f7eb2Smrg //------------------------------------------------------------------------ 181627f7eb2Smrg 182627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator3, class _Function> 183627f7eb2Smrg _ForwardIterator3 __brick_walk3(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator3, _Function, 184627f7eb2Smrg /*vector=*/std::false_type) noexcept; 185627f7eb2Smrg 186627f7eb2Smrg template <class _RandomAccessIterator1, class _RandomAccessIterator2, class _RandomAccessIterator3, class _Function> 187627f7eb2Smrg _RandomAccessIterator3 __brick_walk3(_RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 188627f7eb2Smrg _RandomAccessIterator3, _Function, 189627f7eb2Smrg /*vector=*/std::true_type) noexcept; 190627f7eb2Smrg 191627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator3, 192627f7eb2Smrg class _Function, class _IsVector> 193627f7eb2Smrg _ForwardIterator3 194627f7eb2Smrg __pattern_walk3(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator3, 195627f7eb2Smrg _Function, _IsVector, 196627f7eb2Smrg /*parallel=*/std::false_type) noexcept; 197627f7eb2Smrg 198627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator1, class _RandomAccessIterator2, 199627f7eb2Smrg class _RandomAccessIterator3, class _Function, class _IsVector> 200627f7eb2Smrg _RandomAccessIterator3 201627f7eb2Smrg __pattern_walk3(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 202627f7eb2Smrg _RandomAccessIterator3, _Function, _IsVector, /*parallel=*/std::true_type); 203627f7eb2Smrg 204627f7eb2Smrg //------------------------------------------------------------------------ 205627f7eb2Smrg // equal 206627f7eb2Smrg //------------------------------------------------------------------------ 207627f7eb2Smrg 208627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> 209627f7eb2Smrg bool __brick_equal(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _BinaryPredicate, 210*4c3eb207Smrg /* is_vector = */ std::false_type) noexcept; 211627f7eb2Smrg 212627f7eb2Smrg template <class _RandomAccessIterator1, class _RandomAccessIterator2, class _BinaryPredicate> 213627f7eb2Smrg bool __brick_equal(_RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, _BinaryPredicate, 214627f7eb2Smrg /* is_vector = */ std::true_type) noexcept; 215627f7eb2Smrg 216627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate, 217627f7eb2Smrg class _IsVector> 218627f7eb2Smrg bool 219627f7eb2Smrg __pattern_equal(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _BinaryPredicate, 220*4c3eb207Smrg _IsVector, /* is_parallel = */ std::false_type) noexcept; 221627f7eb2Smrg 222627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator1, class _RandomAccessIterator2, class _BinaryPredicate, 223627f7eb2Smrg class _IsVector> 224627f7eb2Smrg bool 225627f7eb2Smrg __pattern_equal(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 226*4c3eb207Smrg _BinaryPredicate, _IsVector, /* is_parallel = */ std::true_type); 227*4c3eb207Smrg 228*4c3eb207Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> 229*4c3eb207Smrg bool __brick_equal(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, _BinaryPredicate, 230*4c3eb207Smrg /* is_vector = */ std::false_type) noexcept; 231*4c3eb207Smrg 232*4c3eb207Smrg template <class _RandomAccessIterator1, class _RandomAccessIterator2, class _BinaryPredicate> 233*4c3eb207Smrg bool __brick_equal(_RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, _RandomAccessIterator2, 234*4c3eb207Smrg _BinaryPredicate, /* is_vector = */ std::true_type) noexcept; 235*4c3eb207Smrg 236*4c3eb207Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate, 237*4c3eb207Smrg class _IsVector> 238*4c3eb207Smrg bool 239*4c3eb207Smrg __pattern_equal(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 240*4c3eb207Smrg _BinaryPredicate, _IsVector, /* is_parallel = */ std::false_type) noexcept; 241*4c3eb207Smrg 242*4c3eb207Smrg template <class _ExecutionPolicy, class _RandomAccessIterator1, class _RandomAccessIterator2, class _BinaryPredicate, 243*4c3eb207Smrg class _IsVector> 244*4c3eb207Smrg bool 245*4c3eb207Smrg __pattern_equal(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 246*4c3eb207Smrg _RandomAccessIterator2, _BinaryPredicate, _IsVector, /* is_parallel = */ std::true_type); 247627f7eb2Smrg 248627f7eb2Smrg //------------------------------------------------------------------------ 249627f7eb2Smrg // find_if 250627f7eb2Smrg //------------------------------------------------------------------------ 251627f7eb2Smrg 252627f7eb2Smrg template <class _ForwardIterator, class _Predicate> 253627f7eb2Smrg _ForwardIterator __brick_find_if(_ForwardIterator, _ForwardIterator, _Predicate, 254627f7eb2Smrg /*is_vector=*/std::false_type) noexcept; 255627f7eb2Smrg 256627f7eb2Smrg template <class _RandomAccessIterator, class _Predicate> 257627f7eb2Smrg _RandomAccessIterator __brick_find_if(_RandomAccessIterator, _RandomAccessIterator, _Predicate, 258627f7eb2Smrg /*is_vector=*/std::true_type) noexcept; 259627f7eb2Smrg 260627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate, class _IsVector> 261627f7eb2Smrg _ForwardIterator 262627f7eb2Smrg __pattern_find_if(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Predicate, _IsVector, 263627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 264627f7eb2Smrg 265627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate, class _IsVector> 266627f7eb2Smrg _ForwardIterator 267627f7eb2Smrg __pattern_find_if(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Predicate, _IsVector, 268627f7eb2Smrg /*is_parallel=*/std::true_type); 269627f7eb2Smrg 270627f7eb2Smrg //------------------------------------------------------------------------ 271627f7eb2Smrg // find_end 272627f7eb2Smrg //------------------------------------------------------------------------ 273627f7eb2Smrg 274627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> 275627f7eb2Smrg _ForwardIterator1 __brick_find_end(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 276627f7eb2Smrg _BinaryPredicate, 277627f7eb2Smrg /*__is_vector=*/std::false_type) noexcept; 278627f7eb2Smrg 279627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> 280627f7eb2Smrg _ForwardIterator1 __brick_find_end(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 281627f7eb2Smrg _BinaryPredicate, 282627f7eb2Smrg /*__is_vector=*/std::true_type) noexcept; 283627f7eb2Smrg 284627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate, 285627f7eb2Smrg class _IsVector> 286627f7eb2Smrg _ForwardIterator1 287627f7eb2Smrg __pattern_find_end(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 288627f7eb2Smrg _BinaryPredicate, _IsVector, 289627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 290627f7eb2Smrg 291627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate, 292627f7eb2Smrg class _IsVector> 293627f7eb2Smrg _ForwardIterator1 294627f7eb2Smrg __pattern_find_end(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 295627f7eb2Smrg _BinaryPredicate, _IsVector, 296627f7eb2Smrg /*is_parallel=*/std::true_type) noexcept; 297627f7eb2Smrg 298627f7eb2Smrg //------------------------------------------------------------------------ 299627f7eb2Smrg // find_first_of 300627f7eb2Smrg //------------------------------------------------------------------------ 301627f7eb2Smrg 302627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> 303627f7eb2Smrg _ForwardIterator1 __brick_find_first_of(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 304627f7eb2Smrg _BinaryPredicate, 305627f7eb2Smrg /*__is_vector=*/std::false_type) noexcept; 306627f7eb2Smrg 307627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> 308627f7eb2Smrg _ForwardIterator1 __brick_find_first_of(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 309627f7eb2Smrg _BinaryPredicate, 310627f7eb2Smrg /*__is_vector=*/std::true_type) noexcept; 311627f7eb2Smrg 312627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate, 313627f7eb2Smrg class _IsVector> 314627f7eb2Smrg _ForwardIterator1 315627f7eb2Smrg __pattern_find_first_of(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 316627f7eb2Smrg _BinaryPredicate, _IsVector, /*is_parallel=*/std::false_type) noexcept; 317627f7eb2Smrg 318627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate, 319627f7eb2Smrg class _IsVector> 320627f7eb2Smrg _ForwardIterator1 321627f7eb2Smrg __pattern_find_first_of(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 322627f7eb2Smrg _BinaryPredicate, _IsVector, /*is_parallel=*/std::true_type) noexcept; 323627f7eb2Smrg 324627f7eb2Smrg //------------------------------------------------------------------------ 325627f7eb2Smrg // search 326627f7eb2Smrg //------------------------------------------------------------------------ 327627f7eb2Smrg 328627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> 329627f7eb2Smrg _ForwardIterator1 __brick_search(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 330627f7eb2Smrg _BinaryPredicate, 331627f7eb2Smrg /*vector=*/std::false_type) noexcept; 332627f7eb2Smrg 333627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> 334627f7eb2Smrg _ForwardIterator1 __brick_search(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 335627f7eb2Smrg _BinaryPredicate, 336627f7eb2Smrg /*vector=*/std::true_type) noexcept; 337627f7eb2Smrg 338627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate, 339627f7eb2Smrg class _IsVector> 340627f7eb2Smrg _ForwardIterator1 341627f7eb2Smrg __pattern_search(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 342627f7eb2Smrg _BinaryPredicate, _IsVector, 343627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 344627f7eb2Smrg 345627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate, 346627f7eb2Smrg class _IsVector> 347627f7eb2Smrg _ForwardIterator1 348627f7eb2Smrg __pattern_search(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 349627f7eb2Smrg _BinaryPredicate, _IsVector, 350627f7eb2Smrg /*is_parallel=*/std::true_type) noexcept; 351627f7eb2Smrg 352627f7eb2Smrg //------------------------------------------------------------------------ 353627f7eb2Smrg // search_n 354627f7eb2Smrg //------------------------------------------------------------------------ 355627f7eb2Smrg 356627f7eb2Smrg template <class _ForwardIterator, class _Size, class _Tp, class _BinaryPredicate> 357627f7eb2Smrg _ForwardIterator 358627f7eb2Smrg __brick_search_n(_ForwardIterator, _ForwardIterator, _Size, const _Tp&, _BinaryPredicate, 359627f7eb2Smrg /*vector=*/std::false_type) noexcept; 360627f7eb2Smrg 361627f7eb2Smrg template <class _ForwardIterator, class _Size, class _Tp, class _BinaryPredicate> 362627f7eb2Smrg _ForwardIterator 363627f7eb2Smrg __brick_search_n(_ForwardIterator, _ForwardIterator, _Size, const _Tp&, _BinaryPredicate, 364627f7eb2Smrg /*vector=*/std::true_type) noexcept; 365627f7eb2Smrg 366627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Tp, class _BinaryPredicate, 367627f7eb2Smrg class IsVector> 368627f7eb2Smrg _ForwardIterator 369627f7eb2Smrg __pattern_search_n(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Size, const _Tp&, _BinaryPredicate, 370627f7eb2Smrg IsVector, 371627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 372627f7eb2Smrg 373627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Size, class _Tp, class _BinaryPredicate, 374627f7eb2Smrg class IsVector> 375627f7eb2Smrg _RandomAccessIterator 376627f7eb2Smrg __pattern_search_n(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Size, const _Tp&, 377627f7eb2Smrg _BinaryPredicate, IsVector, 378627f7eb2Smrg /*is_parallel=*/std::true_type) noexcept; 379627f7eb2Smrg 380627f7eb2Smrg //------------------------------------------------------------------------ 381627f7eb2Smrg // copy_n 382627f7eb2Smrg //------------------------------------------------------------------------ 383627f7eb2Smrg 384627f7eb2Smrg template <class _ForwardIterator, class _Size, class _OutputIterator> 385627f7eb2Smrg _OutputIterator __brick_copy_n(_ForwardIterator, _Size, _OutputIterator, 386627f7eb2Smrg /*vector=*/std::false_type) noexcept; 387627f7eb2Smrg 388627f7eb2Smrg template <class _ForwardIterator, class _Size, class _OutputIterator> 389627f7eb2Smrg _OutputIterator __brick_copy_n(_ForwardIterator, _Size, _OutputIterator, 390627f7eb2Smrg /*vector=*/std::true_type) noexcept; 391627f7eb2Smrg 392627f7eb2Smrg //------------------------------------------------------------------------ 393627f7eb2Smrg // copy 394627f7eb2Smrg //------------------------------------------------------------------------ 395627f7eb2Smrg 396627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator> 397627f7eb2Smrg _OutputIterator __brick_copy(_ForwardIterator, _ForwardIterator, _OutputIterator, 398627f7eb2Smrg /*vector=*/std::false_type) noexcept; 399627f7eb2Smrg 400627f7eb2Smrg template <class _RandomAccessIterator, class _OutputIterator> 401627f7eb2Smrg _OutputIterator __brick_copy(_RandomAccessIterator, _RandomAccessIterator, _OutputIterator, 402627f7eb2Smrg /*vector=*/std::true_type) noexcept; 403627f7eb2Smrg 404627f7eb2Smrg //------------------------------------------------------------------------ 405627f7eb2Smrg // move 406627f7eb2Smrg //------------------------------------------------------------------------ 407627f7eb2Smrg 408627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator> 409627f7eb2Smrg _OutputIterator __brick_move(_ForwardIterator, _ForwardIterator, _OutputIterator, 410627f7eb2Smrg /*vector=*/std::false_type) noexcept; 411627f7eb2Smrg 412627f7eb2Smrg template <class _RandomAccessIterator, class _OutputIterator> 413627f7eb2Smrg _OutputIterator __brick_move(_RandomAccessIterator, _RandomAccessIterator, _OutputIterator, 414627f7eb2Smrg /*vector=*/std::true_type) noexcept; 415627f7eb2Smrg 416627f7eb2Smrg //------------------------------------------------------------------------ 417627f7eb2Smrg // swap_ranges 418627f7eb2Smrg //------------------------------------------------------------------------ 419627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator> 420627f7eb2Smrg _OutputIterator 421627f7eb2Smrg __brick_swap_ranges(_ForwardIterator __first, _ForwardIterator __last, _OutputIterator __result, 422627f7eb2Smrg /*vector=*/std::false_type) noexcept; 423627f7eb2Smrg 424627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator> 425627f7eb2Smrg _OutputIterator 426627f7eb2Smrg __brick_swap_ranges(_ForwardIterator __first, _ForwardIterator __last, _OutputIterator __result, 427627f7eb2Smrg /*vector=*/std::true_type) noexcept; 428627f7eb2Smrg 429627f7eb2Smrg //------------------------------------------------------------------------ 430627f7eb2Smrg // copy_if 431627f7eb2Smrg //------------------------------------------------------------------------ 432627f7eb2Smrg 433627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator, class _UnaryPredicate> 434627f7eb2Smrg _OutputIterator __brick_copy_if(_ForwardIterator, _ForwardIterator, _OutputIterator, _UnaryPredicate, 435627f7eb2Smrg /*vector=*/std::false_type) noexcept; 436627f7eb2Smrg 437627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator, class _UnaryPredicate> 438627f7eb2Smrg _OutputIterator __brick_copy_if(_ForwardIterator, _ForwardIterator, _OutputIterator, _UnaryPredicate, 439627f7eb2Smrg /*vector=*/std::true_type) noexcept; 440627f7eb2Smrg 441627f7eb2Smrg template <class _DifferenceType, class _ForwardIterator, class _UnaryPredicate> 442627f7eb2Smrg std::pair<_DifferenceType, _DifferenceType> 443627f7eb2Smrg __brick_calc_mask_1(_ForwardIterator, _ForwardIterator, bool* __restrict, _UnaryPredicate, 444627f7eb2Smrg /*vector=*/std::false_type) noexcept; 445627f7eb2Smrg template <class _DifferenceType, class _RandomAccessIterator, class _UnaryPredicate> 446627f7eb2Smrg std::pair<_DifferenceType, _DifferenceType> 447627f7eb2Smrg __brick_calc_mask_1(_RandomAccessIterator, _RandomAccessIterator, bool* __restrict, _UnaryPredicate, 448627f7eb2Smrg /*vector=*/std::true_type) noexcept; 449627f7eb2Smrg 450627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator> 451627f7eb2Smrg void 452627f7eb2Smrg __brick_copy_by_mask(_ForwardIterator, _ForwardIterator, _OutputIterator, bool*, 453627f7eb2Smrg /*vector=*/std::false_type) noexcept; 454627f7eb2Smrg 455627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator> 456627f7eb2Smrg void 457627f7eb2Smrg __brick_copy_by_mask(_ForwardIterator, _ForwardIterator, _OutputIterator, bool* __restrict, 458627f7eb2Smrg /*vector=*/std::true_type) noexcept; 459627f7eb2Smrg 460627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator1, class _OutputIterator2> 461627f7eb2Smrg void 462627f7eb2Smrg __brick_partition_by_mask(_ForwardIterator, _ForwardIterator, _OutputIterator1, _OutputIterator2, bool*, 463627f7eb2Smrg /*vector=*/std::false_type) noexcept; 464627f7eb2Smrg 465627f7eb2Smrg template <class _RandomAccessIterator, class _OutputIterator1, class _OutputIterator2> 466627f7eb2Smrg void 467627f7eb2Smrg __brick_partition_by_mask(_RandomAccessIterator, _RandomAccessIterator, _OutputIterator1, _OutputIterator2, bool*, 468627f7eb2Smrg /*vector=*/std::true_type) noexcept; 469627f7eb2Smrg 470627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _OutputIterator, class _UnaryPredicate, class _IsVector> 471627f7eb2Smrg _OutputIterator 472627f7eb2Smrg __pattern_copy_if(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _OutputIterator, _UnaryPredicate, _IsVector, 473627f7eb2Smrg /*parallel=*/std::false_type) noexcept; 474627f7eb2Smrg 475627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _OutputIterator, class _UnaryPredicate, 476627f7eb2Smrg class _IsVector> 477627f7eb2Smrg _OutputIterator 478627f7eb2Smrg __pattern_copy_if(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _OutputIterator, _UnaryPredicate, 479627f7eb2Smrg _IsVector, /*parallel=*/std::true_type); 480627f7eb2Smrg 481627f7eb2Smrg //------------------------------------------------------------------------ 482627f7eb2Smrg // count 483627f7eb2Smrg //------------------------------------------------------------------------ 484627f7eb2Smrg 485627f7eb2Smrg template <class _ForwardIterator, class _Predicate> 486627f7eb2Smrg typename std::iterator_traits<_ForwardIterator>::difference_type 487627f7eb2Smrg __brick_count(_ForwardIterator, _ForwardIterator, _Predicate, 488627f7eb2Smrg /* is_vector = */ std::true_type) noexcept; 489627f7eb2Smrg 490627f7eb2Smrg template <class _ForwardIterator, class _Predicate> 491627f7eb2Smrg typename std::iterator_traits<_ForwardIterator>::difference_type 492627f7eb2Smrg __brick_count(_ForwardIterator, _ForwardIterator, _Predicate, 493627f7eb2Smrg /* is_vector = */ std::false_type) noexcept; 494627f7eb2Smrg 495627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate, class _IsVector> 496627f7eb2Smrg typename std::iterator_traits<_ForwardIterator>::difference_type 497627f7eb2Smrg __pattern_count(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Predicate, 498627f7eb2Smrg /* is_parallel */ std::false_type, _IsVector) noexcept; 499627f7eb2Smrg 500627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate, class _IsVector> 501627f7eb2Smrg typename std::iterator_traits<_ForwardIterator>::difference_type 502627f7eb2Smrg __pattern_count(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Predicate, 503627f7eb2Smrg /* is_parallel */ std::true_type, _IsVector); 504627f7eb2Smrg 505627f7eb2Smrg //------------------------------------------------------------------------ 506627f7eb2Smrg // unique 507627f7eb2Smrg //------------------------------------------------------------------------ 508627f7eb2Smrg 509627f7eb2Smrg template <class _ForwardIterator, class _BinaryPredicate> 510627f7eb2Smrg _ForwardIterator __brick_unique(_ForwardIterator, _ForwardIterator, _BinaryPredicate, 511627f7eb2Smrg /*is_vector=*/std::false_type) noexcept; 512627f7eb2Smrg 513627f7eb2Smrg template <class _ForwardIterator, class _BinaryPredicate> 514627f7eb2Smrg _ForwardIterator __brick_unique(_ForwardIterator, _ForwardIterator, _BinaryPredicate, 515627f7eb2Smrg /*is_vector=*/std::true_type) noexcept; 516627f7eb2Smrg 517627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _BinaryPredicate, class _IsVector> 518627f7eb2Smrg _ForwardIterator 519627f7eb2Smrg __pattern_unique(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _BinaryPredicate, _IsVector, 520627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 521627f7eb2Smrg 522627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _BinaryPredicate, class _IsVector> 523627f7eb2Smrg _ForwardIterator 524627f7eb2Smrg __pattern_unique(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _BinaryPredicate, _IsVector, 525627f7eb2Smrg /*is_parallel=*/std::true_type) noexcept; 526627f7eb2Smrg 527627f7eb2Smrg //------------------------------------------------------------------------ 528627f7eb2Smrg // unique_copy 529627f7eb2Smrg //------------------------------------------------------------------------ 530627f7eb2Smrg 531627f7eb2Smrg template <class _ForwardIterator, class OutputIterator, class _BinaryPredicate> 532627f7eb2Smrg OutputIterator __brick_unique_copy(_ForwardIterator, _ForwardIterator, OutputIterator, _BinaryPredicate, 533627f7eb2Smrg /*vector=*/std::false_type) noexcept; 534627f7eb2Smrg 535627f7eb2Smrg template <class _RandomAccessIterator, class _OutputIterator, class _BinaryPredicate> 536627f7eb2Smrg _OutputIterator __brick_unique_copy(_RandomAccessIterator, _RandomAccessIterator, _OutputIterator, _BinaryPredicate, 537627f7eb2Smrg /*vector=*/std::true_type) noexcept; 538627f7eb2Smrg 539*4c3eb207Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _OutputIterator, class _BinaryPredicate, 540*4c3eb207Smrg class _IsVector> 541*4c3eb207Smrg _OutputIterator 542*4c3eb207Smrg __pattern_unique_copy(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _OutputIterator, _BinaryPredicate, 543*4c3eb207Smrg _IsVector, /*parallel=*/std::false_type) noexcept; 544627f7eb2Smrg 545627f7eb2Smrg template <class _ExecutionPolicy, class _DifferenceType, class _RandomAccessIterator, class _BinaryPredicate> 546627f7eb2Smrg _DifferenceType 547627f7eb2Smrg __brick_calc_mask_2(_RandomAccessIterator, _RandomAccessIterator, bool* __restrict, _BinaryPredicate, 548627f7eb2Smrg /*vector=*/std::false_type) noexcept; 549627f7eb2Smrg 550627f7eb2Smrg template <class _DifferenceType, class _RandomAccessIterator, class _BinaryPredicate> 551627f7eb2Smrg _DifferenceType 552627f7eb2Smrg __brick_calc_mask_2(_RandomAccessIterator, _RandomAccessIterator, bool* __restrict, _BinaryPredicate, 553627f7eb2Smrg /*vector=*/std::true_type) noexcept; 554627f7eb2Smrg 555627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _OutputIterator, class _BinaryPredicate, 556627f7eb2Smrg class _IsVector> 557627f7eb2Smrg _OutputIterator 558627f7eb2Smrg __pattern_unique_copy(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _OutputIterator, 559627f7eb2Smrg _BinaryPredicate, _IsVector, /*parallel=*/std::true_type); 560627f7eb2Smrg 561627f7eb2Smrg //------------------------------------------------------------------------ 562627f7eb2Smrg // reverse 563627f7eb2Smrg //------------------------------------------------------------------------ 564627f7eb2Smrg 565627f7eb2Smrg template <class _BidirectionalIterator> 566627f7eb2Smrg void __brick_reverse(_BidirectionalIterator, _BidirectionalIterator, 567627f7eb2Smrg /*__is_vector=*/std::false_type) noexcept; 568627f7eb2Smrg 569627f7eb2Smrg template <class _BidirectionalIterator> 570627f7eb2Smrg void __brick_reverse(_BidirectionalIterator, _BidirectionalIterator, 571627f7eb2Smrg /*__is_vector=*/std::true_type) noexcept; 572627f7eb2Smrg 573627f7eb2Smrg template <class _BidirectionalIterator> 574627f7eb2Smrg void __brick_reverse(_BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, 575627f7eb2Smrg /*is_vector=*/std::false_type) noexcept; 576627f7eb2Smrg 577627f7eb2Smrg template <class _BidirectionalIterator> 578627f7eb2Smrg void __brick_reverse(_BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, 579627f7eb2Smrg /*is_vector=*/std::true_type) noexcept; 580627f7eb2Smrg 581627f7eb2Smrg template <class _ExecutionPolicy, class _BidirectionalIterator, class _IsVector> 582627f7eb2Smrg void 583627f7eb2Smrg __pattern_reverse(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _IsVector, 584627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 585627f7eb2Smrg 586627f7eb2Smrg template <class _ExecutionPolicy, class _BidirectionalIterator, class _IsVector> 587627f7eb2Smrg void 588627f7eb2Smrg __pattern_reverse(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _IsVector, 589627f7eb2Smrg /*is_parallel=*/std::true_type); 590627f7eb2Smrg 591627f7eb2Smrg //------------------------------------------------------------------------ 592627f7eb2Smrg // reverse_copy 593627f7eb2Smrg //------------------------------------------------------------------------ 594627f7eb2Smrg 595627f7eb2Smrg template <class _BidirectionalIterator, class _OutputIterator> 596627f7eb2Smrg _OutputIterator __brick_reverse_copy(_BidirectionalIterator, _BidirectionalIterator, _OutputIterator, 597627f7eb2Smrg /*is_vector=*/std::false_type) noexcept; 598627f7eb2Smrg 599627f7eb2Smrg template <class _BidirectionalIterator, class _OutputIterator> 600627f7eb2Smrg _OutputIterator __brick_reverse_copy(_BidirectionalIterator, _BidirectionalIterator, _OutputIterator, 601627f7eb2Smrg /*is_vector=*/std::true_type) noexcept; 602627f7eb2Smrg 603627f7eb2Smrg template <class _ExecutionPolicy, class _BidirectionalIterator, class _OutputIterator, class _IsVector> 604627f7eb2Smrg _OutputIterator 605627f7eb2Smrg __pattern_reverse_copy(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _OutputIterator, _IsVector, 606627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 607627f7eb2Smrg 608627f7eb2Smrg template <class _ExecutionPolicy, class _BidirectionalIterator, class _OutputIterator, class _IsVector> 609627f7eb2Smrg _OutputIterator 610627f7eb2Smrg __pattern_reverse_copy(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _OutputIterator, _IsVector, 611627f7eb2Smrg /*is_parallel=*/std::true_type); 612627f7eb2Smrg 613627f7eb2Smrg //------------------------------------------------------------------------ 614627f7eb2Smrg // rotate 615627f7eb2Smrg //------------------------------------------------------------------------ 616627f7eb2Smrg 617627f7eb2Smrg template <class _ForwardIterator> 618627f7eb2Smrg _ForwardIterator __brick_rotate(_ForwardIterator, _ForwardIterator, _ForwardIterator, 619627f7eb2Smrg /*is_vector=*/std::false_type) noexcept; 620627f7eb2Smrg 621627f7eb2Smrg template <class _ForwardIterator> 622627f7eb2Smrg _ForwardIterator __brick_rotate(_ForwardIterator, _ForwardIterator, _ForwardIterator, 623627f7eb2Smrg /*is_vector=*/std::true_type) noexcept; 624627f7eb2Smrg 625627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _IsVector> 626627f7eb2Smrg _ForwardIterator 627627f7eb2Smrg __pattern_rotate(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _ForwardIterator, _IsVector, 628627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 629627f7eb2Smrg 630627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _IsVector> 631627f7eb2Smrg _ForwardIterator 632627f7eb2Smrg __pattern_rotate(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _ForwardIterator, _IsVector, 633627f7eb2Smrg /*is_parallel=*/std::true_type); 634627f7eb2Smrg 635627f7eb2Smrg //------------------------------------------------------------------------ 636627f7eb2Smrg // rotate_copy 637627f7eb2Smrg //------------------------------------------------------------------------ 638627f7eb2Smrg 639627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator> 640627f7eb2Smrg _OutputIterator __brick_rotate_copy(_ForwardIterator, _ForwardIterator, _ForwardIterator, _OutputIterator, 641627f7eb2Smrg /*__is_vector=*/std::false_type) noexcept; 642627f7eb2Smrg 643627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator> 644627f7eb2Smrg _OutputIterator __brick_rotate_copy(_ForwardIterator, _ForwardIterator, _ForwardIterator, _OutputIterator, 645627f7eb2Smrg /*__is_vector=*/std::true_type) noexcept; 646627f7eb2Smrg 647627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _OutputIterator, class _IsVector> 648627f7eb2Smrg _OutputIterator 649627f7eb2Smrg __pattern_rotate_copy(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _ForwardIterator, _OutputIterator, 650627f7eb2Smrg _IsVector, 651627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 652627f7eb2Smrg 653627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _OutputIterator, class _IsVector> 654627f7eb2Smrg _OutputIterator 655627f7eb2Smrg __pattern_rotate_copy(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _ForwardIterator, _OutputIterator, 656627f7eb2Smrg _IsVector, 657627f7eb2Smrg /*is_parallel=*/std::true_type); 658627f7eb2Smrg 659627f7eb2Smrg //------------------------------------------------------------------------ 660627f7eb2Smrg // is_partitioned 661627f7eb2Smrg //------------------------------------------------------------------------ 662627f7eb2Smrg 663627f7eb2Smrg template <class _ForwardIterator, class _UnaryPredicate> 664627f7eb2Smrg bool __brick_is_partitioned(_ForwardIterator, _ForwardIterator, _UnaryPredicate, 665627f7eb2Smrg /*is_vector=*/std::false_type) noexcept; 666627f7eb2Smrg 667627f7eb2Smrg template <class _ForwardIterator, class _UnaryPredicate> 668627f7eb2Smrg bool __brick_is_partitioned(_ForwardIterator, _ForwardIterator, _UnaryPredicate, 669627f7eb2Smrg /*is_vector=*/std::true_type) noexcept; 670627f7eb2Smrg 671627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate, class _IsVector> 672627f7eb2Smrg bool 673627f7eb2Smrg __pattern_is_partitioned(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _UnaryPredicate, _IsVector, 674627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 675627f7eb2Smrg 676627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate, class _IsVector> 677627f7eb2Smrg bool 678627f7eb2Smrg __pattern_is_partitioned(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _UnaryPredicate, _IsVector, 679627f7eb2Smrg /*is_parallel=*/std::true_type); 680627f7eb2Smrg 681627f7eb2Smrg //------------------------------------------------------------------------ 682627f7eb2Smrg // partition 683627f7eb2Smrg //------------------------------------------------------------------------ 684627f7eb2Smrg 685627f7eb2Smrg template <class _ForwardIterator, class _UnaryPredicate> 686627f7eb2Smrg _ForwardIterator __brick_partition(_ForwardIterator, _ForwardIterator, _UnaryPredicate, 687627f7eb2Smrg /*is_vector=*/std::false_type) noexcept; 688627f7eb2Smrg 689627f7eb2Smrg template <class _ForwardIterator, class _UnaryPredicate> 690627f7eb2Smrg _ForwardIterator __brick_partition(_ForwardIterator, _ForwardIterator, _UnaryPredicate, 691627f7eb2Smrg /*is_vector=*/std::true_type) noexcept; 692627f7eb2Smrg 693627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate, class _IsVector> 694627f7eb2Smrg _ForwardIterator 695627f7eb2Smrg __pattern_partition(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _UnaryPredicate, _IsVector, 696627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 697627f7eb2Smrg 698627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate, class _IsVector> 699627f7eb2Smrg _ForwardIterator 700627f7eb2Smrg __pattern_partition(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _UnaryPredicate, _IsVector, 701627f7eb2Smrg /*is_parallel=*/std::true_type); 702627f7eb2Smrg 703627f7eb2Smrg //------------------------------------------------------------------------ 704627f7eb2Smrg // stable_partition 705627f7eb2Smrg //------------------------------------------------------------------------ 706627f7eb2Smrg 707627f7eb2Smrg template <class _BidirectionalIterator, class _UnaryPredicate> 708627f7eb2Smrg _BidirectionalIterator __brick_stable_partition(_BidirectionalIterator, _BidirectionalIterator, _UnaryPredicate, 709627f7eb2Smrg /*__is_vector=*/std::false_type) noexcept; 710627f7eb2Smrg 711627f7eb2Smrg template <class _BidirectionalIterator, class _UnaryPredicate> 712627f7eb2Smrg _BidirectionalIterator __brick_stable_partition(_BidirectionalIterator, _BidirectionalIterator, _UnaryPredicate, 713627f7eb2Smrg /*__is_vector=*/std::true_type) noexcept; 714627f7eb2Smrg 715627f7eb2Smrg template <class _ExecutionPolicy, class _BidirectionalIterator, class _UnaryPredicate, class _IsVector> 716627f7eb2Smrg _BidirectionalIterator 717627f7eb2Smrg __pattern_stable_partition(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _UnaryPredicate, 718627f7eb2Smrg _IsVector, 719627f7eb2Smrg /*is_parallelization=*/std::false_type) noexcept; 720627f7eb2Smrg 721627f7eb2Smrg template <class _ExecutionPolicy, class _BidirectionalIterator, class _UnaryPredicate, class _IsVector> 722627f7eb2Smrg _BidirectionalIterator 723627f7eb2Smrg __pattern_stable_partition(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _UnaryPredicate, 724627f7eb2Smrg _IsVector, 725627f7eb2Smrg /*is_parallelization=*/std::true_type) noexcept; 726627f7eb2Smrg 727627f7eb2Smrg //------------------------------------------------------------------------ 728627f7eb2Smrg // partition_copy 729627f7eb2Smrg //------------------------------------------------------------------------ 730627f7eb2Smrg 731627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator1, class _OutputIterator2, class _UnaryPredicate> 732627f7eb2Smrg std::pair<_OutputIterator1, _OutputIterator2> 733627f7eb2Smrg __brick_partition_copy(_ForwardIterator, _ForwardIterator, _OutputIterator1, _OutputIterator2, _UnaryPredicate, 734627f7eb2Smrg /*is_vector=*/std::false_type) noexcept; 735627f7eb2Smrg 736627f7eb2Smrg template <class _ForwardIterator, class _OutputIterator1, class _OutputIterator2, class _UnaryPredicate> 737627f7eb2Smrg std::pair<_OutputIterator1, _OutputIterator2> 738627f7eb2Smrg __brick_partition_copy(_ForwardIterator, _ForwardIterator, _OutputIterator1, _OutputIterator2, _UnaryPredicate, 739627f7eb2Smrg /*is_vector=*/std::true_type) noexcept; 740627f7eb2Smrg 741627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _OutputIterator1, class _OutputIterator2, 742627f7eb2Smrg class _UnaryPredicate, class _IsVector> 743627f7eb2Smrg std::pair<_OutputIterator1, _OutputIterator2> 744627f7eb2Smrg __pattern_partition_copy(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _OutputIterator1, _OutputIterator2, 745627f7eb2Smrg _UnaryPredicate, _IsVector, 746627f7eb2Smrg /*is_parallelization=*/std::false_type) noexcept; 747627f7eb2Smrg 748627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _OutputIterator1, class _OutputIterator2, 749627f7eb2Smrg class _UnaryPredicate, class _IsVector> 750627f7eb2Smrg std::pair<_OutputIterator1, _OutputIterator2> 751627f7eb2Smrg __pattern_partition_copy(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _OutputIterator1, 752627f7eb2Smrg _OutputIterator2, _UnaryPredicate, _IsVector, 753627f7eb2Smrg /*is_parallelization=*/std::true_type); 754627f7eb2Smrg 755627f7eb2Smrg //------------------------------------------------------------------------ 756627f7eb2Smrg // sort 757627f7eb2Smrg //------------------------------------------------------------------------ 758627f7eb2Smrg 759627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare, class _IsVector, 760627f7eb2Smrg class _IsMoveConstructible> 761627f7eb2Smrg void 762627f7eb2Smrg __pattern_sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, _IsVector /*is_vector*/, 763627f7eb2Smrg /*is_parallel=*/std::false_type, _IsMoveConstructible) noexcept; 764627f7eb2Smrg 765627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare, class _IsVector> 766627f7eb2Smrg void 767627f7eb2Smrg __pattern_sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, _IsVector /*is_vector*/, 768627f7eb2Smrg /*is_parallel=*/std::true_type, 769627f7eb2Smrg /*is_move_constructible=*/std::true_type); 770627f7eb2Smrg 771627f7eb2Smrg //------------------------------------------------------------------------ 772627f7eb2Smrg // stable_sort 773627f7eb2Smrg //------------------------------------------------------------------------ 774627f7eb2Smrg 775627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare, class _IsVector> 776627f7eb2Smrg void 777627f7eb2Smrg __pattern_stable_sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, 778627f7eb2Smrg _IsVector /*is_vector*/, 779627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 780627f7eb2Smrg 781627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare, class _IsVector> 782627f7eb2Smrg void 783627f7eb2Smrg __pattern_stable_sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, 784627f7eb2Smrg _IsVector /*is_vector*/, 785627f7eb2Smrg /*is_parallel=*/std::true_type); 786627f7eb2Smrg 787627f7eb2Smrg //------------------------------------------------------------------------ 788627f7eb2Smrg // partial_sort 789627f7eb2Smrg //------------------------------------------------------------------------ 790627f7eb2Smrg 791627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare, class _IsVector> 792627f7eb2Smrg void 793627f7eb2Smrg __pattern_partial_sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, 794627f7eb2Smrg _Compare, _IsVector, 795627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 796627f7eb2Smrg 797627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare, class _IsVector> 798627f7eb2Smrg void 799627f7eb2Smrg __pattern_partial_sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, 800627f7eb2Smrg _Compare, _IsVector, 801627f7eb2Smrg /*is_parallel=*/std::true_type); 802627f7eb2Smrg 803627f7eb2Smrg //------------------------------------------------------------------------ 804627f7eb2Smrg // partial_sort_copy 805627f7eb2Smrg //------------------------------------------------------------------------ 806627f7eb2Smrg 807627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _RandomAccessIterator, class _Compare, class _IsVector> 808627f7eb2Smrg _RandomAccessIterator 809627f7eb2Smrg __pattern_partial_sort_copy(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _RandomAccessIterator, 810627f7eb2Smrg _RandomAccessIterator, _Compare, _IsVector, 811627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 812627f7eb2Smrg 813627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _RandomAccessIterator, class _Compare, class _IsVector> 814627f7eb2Smrg _RandomAccessIterator 815627f7eb2Smrg __pattern_partial_sort_copy(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _RandomAccessIterator, 816627f7eb2Smrg _RandomAccessIterator, _Compare, _IsVector, 817627f7eb2Smrg /*is_parallel=*/std::true_type); 818627f7eb2Smrg 819627f7eb2Smrg //------------------------------------------------------------------------ 820627f7eb2Smrg // adjacent_find 821627f7eb2Smrg //------------------------------------------------------------------------ 822627f7eb2Smrg 823627f7eb2Smrg template <class _ForwardIterator, class _BinaryPredicate> 824627f7eb2Smrg _ForwardIterator 825627f7eb2Smrg __brick_adjacent_find(_ForwardIterator, _ForwardIterator, _BinaryPredicate, 826627f7eb2Smrg /* IsVector = */ std::true_type, bool) noexcept; 827627f7eb2Smrg 828627f7eb2Smrg template <class _ForwardIterator, class _BinaryPredicate> 829627f7eb2Smrg _ForwardIterator 830627f7eb2Smrg __brick_adjacent_find(_ForwardIterator, _ForwardIterator, _BinaryPredicate, 831627f7eb2Smrg /* IsVector = */ std::false_type, bool) noexcept; 832627f7eb2Smrg 833627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _BinaryPredicate, class _IsVector> 834627f7eb2Smrg _ForwardIterator 835627f7eb2Smrg __pattern_adjacent_find(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _BinaryPredicate, 836627f7eb2Smrg /* is_parallel */ std::false_type, _IsVector, bool) noexcept; 837627f7eb2Smrg 838627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _BinaryPredicate, class _IsVector> 839627f7eb2Smrg _RandomAccessIterator 840627f7eb2Smrg __pattern_adjacent_find(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _BinaryPredicate, 841627f7eb2Smrg /* is_parallel */ std::true_type, _IsVector, bool); 842627f7eb2Smrg 843627f7eb2Smrg //------------------------------------------------------------------------ 844627f7eb2Smrg // nth_element 845627f7eb2Smrg //------------------------------------------------------------------------ 846627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare, class _IsVector> 847627f7eb2Smrg void 848627f7eb2Smrg __pattern_nth_element(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare, 849627f7eb2Smrg _IsVector, 850627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 851627f7eb2Smrg 852627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare, class _IsVector> 853627f7eb2Smrg void 854627f7eb2Smrg __pattern_nth_element(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare, 855627f7eb2Smrg _IsVector, 856627f7eb2Smrg /*is_parallel=*/std::true_type) noexcept; 857627f7eb2Smrg 858627f7eb2Smrg //------------------------------------------------------------------------ 859627f7eb2Smrg // fill, fill_n 860627f7eb2Smrg //------------------------------------------------------------------------ 861627f7eb2Smrg template <class _ForwardIterator, class _Tp> 862627f7eb2Smrg void 863627f7eb2Smrg __brick_fill(_ForwardIterator, _ForwardIterator, const _Tp&, 864627f7eb2Smrg /* __is_vector = */ std::true_type) noexcept; 865627f7eb2Smrg 866627f7eb2Smrg template <class _ForwardIterator, class _Tp> 867627f7eb2Smrg void 868627f7eb2Smrg __brick_fill(_ForwardIterator, _ForwardIterator, const _Tp&, 869627f7eb2Smrg /* __is_vector = */ std::false_type) noexcept; 870627f7eb2Smrg 871627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Tp, class _IsVector> 872627f7eb2Smrg void 873627f7eb2Smrg __pattern_fill(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, const _Tp&, 874627f7eb2Smrg /*is_parallel=*/std::false_type, _IsVector) noexcept; 875627f7eb2Smrg 876627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Tp, class _IsVector> 877627f7eb2Smrg _ForwardIterator 878627f7eb2Smrg __pattern_fill(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, const _Tp&, 879627f7eb2Smrg /*is_parallel=*/std::true_type, _IsVector); 880627f7eb2Smrg 881627f7eb2Smrg template <class _OutputIterator, class _Size, class _Tp> 882627f7eb2Smrg _OutputIterator 883627f7eb2Smrg __brick_fill_n(_OutputIterator, _Size, const _Tp&, 884627f7eb2Smrg /* __is_vector = */ std::true_type) noexcept; 885627f7eb2Smrg 886627f7eb2Smrg template <class _OutputIterator, class _Size, class _Tp> 887627f7eb2Smrg _OutputIterator 888627f7eb2Smrg __brick_fill_n(_OutputIterator, _Size, const _Tp&, 889627f7eb2Smrg /* __is_vector = */ std::false_type) noexcept; 890627f7eb2Smrg 891627f7eb2Smrg template <class _ExecutionPolicy, class _OutputIterator, class _Size, class _Tp, class _IsVector> 892627f7eb2Smrg _OutputIterator 893627f7eb2Smrg __pattern_fill_n(_ExecutionPolicy&&, _OutputIterator, _Size, const _Tp&, 894627f7eb2Smrg /*is_parallel=*/std::false_type, _IsVector) noexcept; 895627f7eb2Smrg 896627f7eb2Smrg template <class _ExecutionPolicy, class _OutputIterator, class _Size, class _Tp, class _IsVector> 897627f7eb2Smrg _OutputIterator 898627f7eb2Smrg __pattern_fill_n(_ExecutionPolicy&&, _OutputIterator, _Size, const _Tp&, 899627f7eb2Smrg /*is_parallel=*/std::true_type, _IsVector); 900627f7eb2Smrg 901627f7eb2Smrg //------------------------------------------------------------------------ 902627f7eb2Smrg // generate, generate_n 903627f7eb2Smrg //------------------------------------------------------------------------ 904627f7eb2Smrg 905627f7eb2Smrg template <class _RandomAccessIterator, class _Generator> 906627f7eb2Smrg void __brick_generate(_RandomAccessIterator, _RandomAccessIterator, _Generator, 907627f7eb2Smrg /* is_vector = */ std::true_type) noexcept; 908627f7eb2Smrg 909627f7eb2Smrg template <class _ForwardIterator, class _Generator> 910627f7eb2Smrg void __brick_generate(_ForwardIterator, _ForwardIterator, _Generator, 911627f7eb2Smrg /* is_vector = */ std::false_type) noexcept; 912627f7eb2Smrg 913627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Generator, class _IsVector> 914627f7eb2Smrg void 915627f7eb2Smrg __pattern_generate(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Generator, 916627f7eb2Smrg /*is_parallel=*/std::false_type, _IsVector) noexcept; 917627f7eb2Smrg 918627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _Generator, class _IsVector> 919627f7eb2Smrg _ForwardIterator 920627f7eb2Smrg __pattern_generate(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Generator, 921627f7eb2Smrg /*is_parallel=*/std::true_type, _IsVector); 922627f7eb2Smrg 923627f7eb2Smrg template <class OutputIterator, class Size, class _Generator> 924627f7eb2Smrg OutputIterator __brick_generate_n(OutputIterator, Size, _Generator, 925627f7eb2Smrg /* is_vector = */ std::true_type) noexcept; 926627f7eb2Smrg 927627f7eb2Smrg template <class OutputIterator, class Size, class _Generator> 928627f7eb2Smrg OutputIterator __brick_generate_n(OutputIterator, Size, _Generator, 929627f7eb2Smrg /* is_vector = */ std::false_type) noexcept; 930627f7eb2Smrg 931627f7eb2Smrg template <class _ExecutionPolicy, class OutputIterator, class Size, class _Generator, class _IsVector> 932627f7eb2Smrg OutputIterator 933627f7eb2Smrg __pattern_generate_n(_ExecutionPolicy&&, OutputIterator, Size, _Generator, 934627f7eb2Smrg /*is_parallel=*/std::false_type, _IsVector) noexcept; 935627f7eb2Smrg 936627f7eb2Smrg template <class _ExecutionPolicy, class OutputIterator, class Size, class _Generator, class _IsVector> 937627f7eb2Smrg OutputIterator 938627f7eb2Smrg __pattern_generate_n(_ExecutionPolicy&&, OutputIterator, Size, _Generator, 939627f7eb2Smrg /*is_parallel=*/std::true_type, _IsVector); 940627f7eb2Smrg 941627f7eb2Smrg //------------------------------------------------------------------------ 942627f7eb2Smrg // remove 943627f7eb2Smrg //------------------------------------------------------------------------ 944627f7eb2Smrg template <class _ForwardIterator, class _UnaryPredicate> 945627f7eb2Smrg _ForwardIterator __brick_remove_if(_ForwardIterator, _ForwardIterator, _UnaryPredicate, 946627f7eb2Smrg /* __is_vector = */ std::false_type) noexcept; 947627f7eb2Smrg 948627f7eb2Smrg template <class _RandomAccessIterator, class _UnaryPredicate> 949627f7eb2Smrg _RandomAccessIterator __brick_remove_if(_RandomAccessIterator, _RandomAccessIterator, _UnaryPredicate, 950627f7eb2Smrg /* __is_vector = */ std::true_type) noexcept; 951627f7eb2Smrg 952627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate, class _IsVector> 953627f7eb2Smrg _ForwardIterator 954627f7eb2Smrg __pattern_remove_if(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _UnaryPredicate, _IsVector, 955627f7eb2Smrg /*is_parallel*/ std::false_type) noexcept; 956627f7eb2Smrg 957627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate, class _IsVector> 958627f7eb2Smrg _ForwardIterator 959627f7eb2Smrg __pattern_remove_if(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _UnaryPredicate, _IsVector, 960627f7eb2Smrg /*is_parallel*/ std::true_type) noexcept; 961627f7eb2Smrg 962627f7eb2Smrg //------------------------------------------------------------------------ 963627f7eb2Smrg // merge 964627f7eb2Smrg //------------------------------------------------------------------------ 965627f7eb2Smrg 966627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, class _Compare> 967627f7eb2Smrg _OutputIterator __brick_merge(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 968627f7eb2Smrg _OutputIterator, _Compare, 969627f7eb2Smrg /* __is_vector = */ std::false_type) noexcept; 970627f7eb2Smrg 971627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, class _Compare> 972627f7eb2Smrg _OutputIterator __brick_merge(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 973627f7eb2Smrg _OutputIterator, _Compare, 974627f7eb2Smrg /* __is_vector = */ std::true_type) noexcept; 975627f7eb2Smrg 976627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, 977627f7eb2Smrg class _Compare, class _IsVector> 978627f7eb2Smrg _OutputIterator 979627f7eb2Smrg __pattern_merge(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 980627f7eb2Smrg _OutputIterator, _Compare, _IsVector, /* is_parallel = */ std::false_type) noexcept; 981627f7eb2Smrg 982627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator1, class _RandomAccessIterator2, class _OutputIterator, 983627f7eb2Smrg class _Compare, class _IsVector> 984627f7eb2Smrg _OutputIterator 985627f7eb2Smrg __pattern_merge(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 986627f7eb2Smrg _RandomAccessIterator2, _OutputIterator, _Compare, _IsVector, 987627f7eb2Smrg /* is_parallel = */ std::true_type); 988627f7eb2Smrg 989627f7eb2Smrg //------------------------------------------------------------------------ 990627f7eb2Smrg // inplace_merge 991627f7eb2Smrg //------------------------------------------------------------------------ 992627f7eb2Smrg 993627f7eb2Smrg template <class _BidirectionalIterator, class _Compare> 994627f7eb2Smrg void __brick_inplace_merge(_BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, _Compare, 995627f7eb2Smrg /* __is_vector = */ std::false_type) noexcept; 996627f7eb2Smrg 997627f7eb2Smrg template <class _BidirectionalIterator, class _Compare> 998627f7eb2Smrg void __brick_inplace_merge(_BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, _Compare, 999627f7eb2Smrg /* __is_vector = */ std::true_type) noexcept; 1000627f7eb2Smrg 1001627f7eb2Smrg template <class _ExecutionPolicy, class _BidirectionalIterator, class _Compare, class _IsVector> 1002627f7eb2Smrg void 1003627f7eb2Smrg __pattern_inplace_merge(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, 1004627f7eb2Smrg _Compare, _IsVector, 1005627f7eb2Smrg /* is_parallel = */ std::false_type) noexcept; 1006627f7eb2Smrg 1007627f7eb2Smrg template <class _ExecutionPolicy, class _BidirectionalIterator, class _Compare, class _IsVector> 1008627f7eb2Smrg void 1009627f7eb2Smrg __pattern_inplace_merge(_ExecutionPolicy&&, _BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, 1010627f7eb2Smrg _Compare, _IsVector, 1011627f7eb2Smrg /*is_parallel=*/std::true_type); 1012627f7eb2Smrg 1013627f7eb2Smrg //------------------------------------------------------------------------ 1014627f7eb2Smrg // includes 1015627f7eb2Smrg //------------------------------------------------------------------------ 1016627f7eb2Smrg 1017627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Compare, class _IsVector> 1018627f7eb2Smrg bool 1019627f7eb2Smrg __pattern_includes(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1020627f7eb2Smrg _Compare, _IsVector, 1021627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 1022627f7eb2Smrg 1023627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Compare, class _IsVector> 1024627f7eb2Smrg bool 1025627f7eb2Smrg __pattern_includes(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1026627f7eb2Smrg _Compare, _IsVector, 1027627f7eb2Smrg /*is_parallel=*/std::true_type); 1028627f7eb2Smrg 1029627f7eb2Smrg //------------------------------------------------------------------------ 1030627f7eb2Smrg // set_union 1031627f7eb2Smrg //------------------------------------------------------------------------ 1032627f7eb2Smrg 1033627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, class _Compare> 1034627f7eb2Smrg _OutputIterator __brick_set_union(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1035627f7eb2Smrg _OutputIterator, _Compare, 1036627f7eb2Smrg /*__is_vector=*/std::false_type) noexcept; 1037627f7eb2Smrg 1038627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, class _Compare> 1039627f7eb2Smrg _OutputIterator __brick_set_union(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1040627f7eb2Smrg _OutputIterator, _Compare, 1041627f7eb2Smrg /*__is_vector=*/std::true_type) noexcept; 1042627f7eb2Smrg 1043627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, 1044627f7eb2Smrg class _Compare, class _IsVector> 1045627f7eb2Smrg _OutputIterator 1046627f7eb2Smrg __pattern_set_union(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1047627f7eb2Smrg _OutputIterator, _Compare, _IsVector, /*is_parallel=*/std::false_type) noexcept; 1048627f7eb2Smrg 1049627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, 1050627f7eb2Smrg class _Compare, class _IsVector> 1051627f7eb2Smrg _OutputIterator 1052627f7eb2Smrg __pattern_set_union(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1053627f7eb2Smrg _OutputIterator, _Compare, _IsVector, /*is_parallel=*/std::true_type); 1054627f7eb2Smrg 1055627f7eb2Smrg //------------------------------------------------------------------------ 1056627f7eb2Smrg // set_intersection 1057627f7eb2Smrg //------------------------------------------------------------------------ 1058627f7eb2Smrg 1059627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, class _Compare> 1060627f7eb2Smrg _OutputIterator __brick_set_intersection(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1061627f7eb2Smrg _OutputIterator, _Compare, 1062627f7eb2Smrg /*__is_vector=*/std::false_type) noexcept; 1063627f7eb2Smrg 1064627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, class _Compare> 1065627f7eb2Smrg _OutputIterator __brick_set_intersection(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1066627f7eb2Smrg _OutputIterator, _Compare, 1067627f7eb2Smrg /*__is_vector=*/std::true_type) noexcept; 1068627f7eb2Smrg 1069627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, 1070627f7eb2Smrg class _Compare, class _IsVector> 1071627f7eb2Smrg _OutputIterator 1072627f7eb2Smrg __pattern_set_intersection(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1073627f7eb2Smrg _ForwardIterator2, _OutputIterator, _Compare, _IsVector, 1074627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 1075627f7eb2Smrg 1076627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, 1077627f7eb2Smrg class _Compare, class _IsVector> 1078627f7eb2Smrg _OutputIterator 1079627f7eb2Smrg __pattern_set_intersection(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1080627f7eb2Smrg _ForwardIterator2, _OutputIterator, _Compare, _IsVector, /*is_parallel=*/std::true_type); 1081627f7eb2Smrg 1082627f7eb2Smrg //------------------------------------------------------------------------ 1083627f7eb2Smrg // set_difference 1084627f7eb2Smrg //------------------------------------------------------------------------ 1085627f7eb2Smrg 1086627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, class _Compare> 1087627f7eb2Smrg _OutputIterator __brick_set_difference(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1088627f7eb2Smrg _OutputIterator, _Compare, 1089627f7eb2Smrg /*__is_vector=*/std::false_type) noexcept; 1090627f7eb2Smrg 1091627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, class _Compare> 1092627f7eb2Smrg _OutputIterator __brick_set_difference(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1093627f7eb2Smrg _OutputIterator, _Compare, 1094627f7eb2Smrg /*__is_vector=*/std::true_type) noexcept; 1095627f7eb2Smrg 1096627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, 1097627f7eb2Smrg class _Compare, class _IsVector> 1098627f7eb2Smrg _OutputIterator 1099627f7eb2Smrg __pattern_set_difference(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1100627f7eb2Smrg _OutputIterator, _Compare, _IsVector, /*is_parallel=*/std::false_type) noexcept; 1101627f7eb2Smrg 1102627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, 1103627f7eb2Smrg class _Compare, class _IsVector> 1104627f7eb2Smrg _OutputIterator 1105627f7eb2Smrg __pattern_set_difference(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1106627f7eb2Smrg _OutputIterator, _Compare, _IsVector, /*is_parallel=*/std::true_type); 1107627f7eb2Smrg 1108627f7eb2Smrg //------------------------------------------------------------------------ 1109627f7eb2Smrg // set_symmetric_difference 1110627f7eb2Smrg //------------------------------------------------------------------------ 1111627f7eb2Smrg 1112627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, class _Compare> 1113627f7eb2Smrg _OutputIterator __brick_set_symmetric_difference(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1114627f7eb2Smrg _ForwardIterator2, _OutputIterator, _Compare, 1115627f7eb2Smrg /*__is_vector=*/std::false_type) noexcept; 1116627f7eb2Smrg 1117627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, class _Compare> 1118627f7eb2Smrg _OutputIterator __brick_set_symmetric_difference(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1119627f7eb2Smrg _ForwardIterator2, _OutputIterator, _Compare, 1120627f7eb2Smrg /*__is_vector=*/std::true_type) noexcept; 1121627f7eb2Smrg 1122627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, 1123627f7eb2Smrg class _Compare, class _IsVector> 1124627f7eb2Smrg _OutputIterator 1125627f7eb2Smrg __pattern_set_symmetric_difference(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1126627f7eb2Smrg _ForwardIterator2, _OutputIterator, _Compare, _IsVector, 1127627f7eb2Smrg /*is_parallel=*/std::false_type) noexcept; 1128627f7eb2Smrg 1129627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _OutputIterator, 1130627f7eb2Smrg class _Compare, class _IsVector> 1131627f7eb2Smrg _OutputIterator 1132627f7eb2Smrg __pattern_set_symmetric_difference(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1133627f7eb2Smrg _ForwardIterator2, _OutputIterator, _Compare, _IsVector, 1134627f7eb2Smrg /*is_parallel=*/std::true_type); 1135627f7eb2Smrg 1136627f7eb2Smrg //------------------------------------------------------------------------ 1137627f7eb2Smrg // is_heap_until 1138627f7eb2Smrg //------------------------------------------------------------------------ 1139627f7eb2Smrg 1140627f7eb2Smrg template <class _RandomAccessIterator, class _Compare> 1141627f7eb2Smrg _RandomAccessIterator __brick_is_heap_until(_RandomAccessIterator, _RandomAccessIterator, _Compare, 1142627f7eb2Smrg /* __is_vector = */ std::false_type) noexcept; 1143627f7eb2Smrg 1144627f7eb2Smrg template <class _RandomAccessIterator, class _Compare> 1145627f7eb2Smrg _RandomAccessIterator __brick_is_heap_until(_RandomAccessIterator, _RandomAccessIterator, _Compare, 1146627f7eb2Smrg /* __is_vector = */ std::true_type) noexcept; 1147627f7eb2Smrg 1148627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare, class _IsVector> 1149627f7eb2Smrg _RandomAccessIterator 1150627f7eb2Smrg __pattern_is_heap_until(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, _IsVector, 1151627f7eb2Smrg /* is_parallel = */ std::false_type) noexcept; 1152627f7eb2Smrg 1153627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare, class _IsVector> 1154627f7eb2Smrg _RandomAccessIterator 1155627f7eb2Smrg __pattern_is_heap_until(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, _IsVector, 1156627f7eb2Smrg /* is_parallel = */ std::true_type) noexcept; 1157627f7eb2Smrg 1158627f7eb2Smrg //------------------------------------------------------------------------ 1159627f7eb2Smrg // min_element 1160627f7eb2Smrg //------------------------------------------------------------------------ 1161627f7eb2Smrg 1162627f7eb2Smrg template <typename _ForwardIterator, typename _Compare> 1163627f7eb2Smrg _ForwardIterator __brick_min_element(_ForwardIterator, _ForwardIterator, _Compare, 1164627f7eb2Smrg /* __is_vector = */ std::false_type) noexcept; 1165627f7eb2Smrg 1166627f7eb2Smrg template <typename _ForwardIterator, typename _Compare> 1167627f7eb2Smrg _ForwardIterator __brick_min_element(_ForwardIterator, _ForwardIterator, _Compare, 1168627f7eb2Smrg /* __is_vector = */ std::true_type) noexcept; 1169627f7eb2Smrg 1170627f7eb2Smrg template <typename _ExecutionPolicy, typename _ForwardIterator, typename _Compare, typename _IsVector> 1171627f7eb2Smrg _ForwardIterator 1172627f7eb2Smrg __pattern_min_element(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Compare, _IsVector, 1173627f7eb2Smrg /* is_parallel = */ std::false_type) noexcept; 1174627f7eb2Smrg 1175627f7eb2Smrg template <typename _ExecutionPolicy, typename _RandomAccessIterator, typename _Compare, typename _IsVector> 1176627f7eb2Smrg _RandomAccessIterator 1177627f7eb2Smrg __pattern_min_element(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare, _IsVector, 1178627f7eb2Smrg /* is_parallel = */ std::true_type); 1179627f7eb2Smrg 1180627f7eb2Smrg //------------------------------------------------------------------------ 1181627f7eb2Smrg // minmax_element 1182627f7eb2Smrg //------------------------------------------------------------------------ 1183627f7eb2Smrg 1184627f7eb2Smrg template <typename _ForwardIterator, typename _Compare> 1185627f7eb2Smrg std::pair<_ForwardIterator, _ForwardIterator> __brick_minmax_element(_ForwardIterator, _ForwardIterator, _Compare, 1186627f7eb2Smrg /* __is_vector = */ std::false_type) noexcept; 1187627f7eb2Smrg 1188627f7eb2Smrg template <typename _ForwardIterator, typename _Compare> 1189627f7eb2Smrg std::pair<_ForwardIterator, _ForwardIterator> __brick_minmax_element(_ForwardIterator, _ForwardIterator, _Compare, 1190627f7eb2Smrg /* __is_vector = */ std::true_type) noexcept; 1191627f7eb2Smrg 1192627f7eb2Smrg template <typename _ExecutionPolicy, typename _ForwardIterator, typename _Compare, typename _IsVector> 1193627f7eb2Smrg std::pair<_ForwardIterator, _ForwardIterator> 1194627f7eb2Smrg __pattern_minmax_element(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Compare, _IsVector, 1195627f7eb2Smrg /* is_parallel = */ std::false_type) noexcept; 1196627f7eb2Smrg 1197627f7eb2Smrg template <typename _ExecutionPolicy, typename _ForwardIterator, typename _Compare, typename _IsVector> 1198627f7eb2Smrg std::pair<_ForwardIterator, _ForwardIterator> 1199627f7eb2Smrg __pattern_minmax_element(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Compare, _IsVector, 1200627f7eb2Smrg /* is_parallel = */ std::true_type); 1201627f7eb2Smrg 1202627f7eb2Smrg //------------------------------------------------------------------------ 1203627f7eb2Smrg // mismatch 1204627f7eb2Smrg //------------------------------------------------------------------------ 1205627f7eb2Smrg 1206627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _Predicate> 1207627f7eb2Smrg std::pair<_ForwardIterator1, _ForwardIterator2> __brick_mismatch(_ForwardIterator1, _ForwardIterator1, 1208627f7eb2Smrg _ForwardIterator2, _ForwardIterator2, _Predicate, 1209627f7eb2Smrg /* __is_vector = */ std::false_type) noexcept; 1210627f7eb2Smrg 1211627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _Predicate> 1212627f7eb2Smrg std::pair<_ForwardIterator1, _ForwardIterator2> __brick_mismatch(_ForwardIterator1, _ForwardIterator1, 1213627f7eb2Smrg _ForwardIterator2, _ForwardIterator2, _Predicate, 1214627f7eb2Smrg /* __is_vector = */ std::true_type) noexcept; 1215627f7eb2Smrg 1216627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Predicate, class _IsVector> 1217627f7eb2Smrg std::pair<_ForwardIterator1, _ForwardIterator2> 1218627f7eb2Smrg __pattern_mismatch(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1219627f7eb2Smrg _Predicate, _IsVector, 1220627f7eb2Smrg /* is_parallel = */ std::false_type) noexcept; 1221627f7eb2Smrg 1222627f7eb2Smrg template <class _ExecutionPolicy, class _RandomAccessIterator1, class _RandomAccessIterator2, class _Predicate, 1223627f7eb2Smrg class _IsVector> 1224627f7eb2Smrg std::pair<_RandomAccessIterator1, _RandomAccessIterator2> 1225627f7eb2Smrg __pattern_mismatch(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2, 1226627f7eb2Smrg _RandomAccessIterator2, _Predicate, _IsVector, /* is_parallel = */ std::true_type) noexcept; 1227627f7eb2Smrg 1228627f7eb2Smrg //------------------------------------------------------------------------ 1229627f7eb2Smrg // lexicographical_compare 1230627f7eb2Smrg //------------------------------------------------------------------------ 1231627f7eb2Smrg 1232627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _Compare> 1233627f7eb2Smrg bool __brick_lexicographical_compare(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1234627f7eb2Smrg _Compare, 1235627f7eb2Smrg /* __is_vector = */ std::false_type) noexcept; 1236627f7eb2Smrg 1237627f7eb2Smrg template <class _ForwardIterator1, class _ForwardIterator2, class _Compare> 1238627f7eb2Smrg bool __brick_lexicographical_compare(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, 1239627f7eb2Smrg _Compare, 1240627f7eb2Smrg /* __is_vector = */ std::true_type) noexcept; 1241627f7eb2Smrg 1242627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Compare, class _IsVector> 1243627f7eb2Smrg bool 1244627f7eb2Smrg __pattern_lexicographical_compare(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1245627f7eb2Smrg _ForwardIterator2, _Compare, _IsVector, /* is_parallel = */ std::false_type) noexcept; 1246627f7eb2Smrg 1247627f7eb2Smrg template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Compare, class _IsVector> 1248627f7eb2Smrg bool 1249627f7eb2Smrg __pattern_lexicographical_compare(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, 1250627f7eb2Smrg _ForwardIterator2, _Compare, _IsVector, /* is_parallel = */ std::true_type) noexcept; 1251627f7eb2Smrg 1252627f7eb2Smrg } // namespace __internal 1253627f7eb2Smrg } // namespace __pstl 1254*4c3eb207Smrg #endif /* _PSTL_ALGORITHM_FWD_H */ 1255