1 | // -*- C++ -*- |
2 | //===-- glue_algorithm_defs.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_glue_algorithm_defs_H |
11 | #define __PSTL_glue_algorithm_defs_H |
12 | |
13 | #include <functional> |
14 | |
15 | #include "execution_defs.h" |
16 | |
17 | namespace std |
18 | { |
19 | |
20 | // [alg.any_of] |
21 | |
22 | template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate> |
23 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
24 | any_of(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); |
25 | |
26 | // [alg.all_of] |
27 | |
28 | template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate> |
29 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
30 | all_of(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); |
31 | |
32 | // [alg.none_of] |
33 | |
34 | template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate> |
35 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
36 | none_of(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); |
37 | |
38 | // [alg.foreach] |
39 | |
40 | template <class _ExecutionPolicy, class _ForwardIterator, class _Function> |
41 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
42 | for_each(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Function __f); |
43 | |
44 | template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Function> |
45 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
46 | for_each_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n, _Function __f); |
47 | |
48 | // [alg.find] |
49 | |
50 | template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate> |
51 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
52 | find_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); |
53 | |
54 | template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate> |
55 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
56 | find_if_not(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); |
57 | |
58 | template <class _ExecutionPolicy, class _ForwardIterator, class _Tp> |
59 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
60 | find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); |
61 | |
62 | // [alg.find.end] |
63 | |
64 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> |
65 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> |
66 | find_end(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first, |
67 | _ForwardIterator2 __s_last, _BinaryPredicate __pred); |
68 | |
69 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
70 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> |
71 | find_end(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first, |
72 | _ForwardIterator2 __s_last); |
73 | |
74 | // [alg.find_first_of] |
75 | |
76 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> |
77 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> |
78 | find_first_of(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, |
79 | _ForwardIterator2 __s_first, _ForwardIterator2 __s_last, _BinaryPredicate __pred); |
80 | |
81 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
82 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> |
83 | find_first_of(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, |
84 | _ForwardIterator2 __s_first, _ForwardIterator2 __s_last); |
85 | |
86 | // [alg.adjacent_find] |
87 | |
88 | template <class _ExecutionPolicy, class _ForwardIterator> |
89 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
90 | adjacent_find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); |
91 | |
92 | template <class _ExecutionPolicy, class _ForwardIterator, class _BinaryPredicate> |
93 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
94 | adjacent_find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred); |
95 | |
96 | // [alg.count] |
97 | |
98 | template <class _ExecutionPolicy, class _ForwardIterator, class _Tp> |
99 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, |
100 | typename iterator_traits<_ForwardIterator>::difference_type> |
101 | count(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); |
102 | |
103 | template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate> |
104 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, |
105 | typename iterator_traits<_ForwardIterator>::difference_type> |
106 | count_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); |
107 | |
108 | // [alg.search] |
109 | |
110 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> |
111 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> |
112 | search(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first, |
113 | _ForwardIterator2 __s_last, _BinaryPredicate __pred); |
114 | |
115 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
116 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> |
117 | search(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first, |
118 | _ForwardIterator2 __s_last); |
119 | |
120 | template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Tp, class _BinaryPredicate> |
121 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
122 | search_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Size __count, |
123 | const _Tp& __value, _BinaryPredicate __pred); |
124 | |
125 | template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Tp> |
126 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
127 | search_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Size __count, |
128 | const _Tp& __value); |
129 | |
130 | // [alg.copy] |
131 | |
132 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
133 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
134 | copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result); |
135 | |
136 | template <class _ExecutionPolicy, class _ForwardIterator1, class _Size, class _ForwardIterator2> |
137 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
138 | copy_n(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _Size __n, _ForwardIterator2 __result); |
139 | |
140 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Predicate> |
141 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
142 | copy_if(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 result, |
143 | _Predicate __pred); |
144 | |
145 | // [alg.swap] |
146 | |
147 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
148 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
149 | swap_ranges(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, |
150 | _ForwardIterator2 __first2); |
151 | |
152 | // [alg.transform] |
153 | |
154 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _UnaryOperation> |
155 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
156 | transform(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result, |
157 | _UnaryOperation __op); |
158 | |
159 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator, |
160 | class _BinaryOperation> |
161 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
162 | transform(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
163 | _ForwardIterator __result, _BinaryOperation __op); |
164 | |
165 | // [alg.replace] |
166 | |
167 | template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate, class _Tp> |
168 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
169 | replace_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred, |
170 | const _Tp& __new_value); |
171 | |
172 | template <class _ExecutionPolicy, class _ForwardIterator, class _Tp> |
173 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
174 | replace(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __old_value, |
175 | const _Tp& __new_value); |
176 | |
177 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _UnaryPredicate, class _Tp> |
178 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
179 | replace_copy_if(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, |
180 | _ForwardIterator2 __result, _UnaryPredicate __pred, const _Tp& __new_value); |
181 | |
182 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp> |
183 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
184 | replace_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result, |
185 | const _Tp& __old_value, const _Tp& __new_value); |
186 | |
187 | // [alg.fill] |
188 | |
189 | template <class _ExecutionPolicy, class _ForwardIterator, class _Tp> |
190 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
191 | fill(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); |
192 | |
193 | template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Tp> |
194 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
195 | fill_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __count, const _Tp& __value); |
196 | |
197 | // [alg.generate] |
198 | template <class _ExecutionPolicy, class _ForwardIterator, class _Generator> |
199 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
200 | generate(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Generator __g); |
201 | |
202 | template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Generator> |
203 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
204 | generate_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size count, _Generator __g); |
205 | |
206 | // [alg.remove] |
207 | |
208 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Predicate> |
209 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
210 | remove_copy_if(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, |
211 | _ForwardIterator2 __result, _Predicate __pred); |
212 | |
213 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp> |
214 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
215 | remove_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result, |
216 | const _Tp& __value); |
217 | |
218 | template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate> |
219 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
220 | remove_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred); |
221 | |
222 | template <class _ExecutionPolicy, class _ForwardIterator, class _Tp> |
223 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
224 | remove(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); |
225 | |
226 | // [alg.unique] |
227 | |
228 | template <class _ExecutionPolicy, class _ForwardIterator, class _BinaryPredicate> |
229 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
230 | unique(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred); |
231 | |
232 | template <class _ExecutionPolicy, class _ForwardIterator> |
233 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
234 | unique(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); |
235 | |
236 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> |
237 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
238 | unique_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result, |
239 | _BinaryPredicate __pred); |
240 | |
241 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
242 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
243 | unique_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result); |
244 | |
245 | // [alg.reverse] |
246 | |
247 | template <class _ExecutionPolicy, class _BidirectionalIterator> |
248 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
249 | reverse(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __last); |
250 | |
251 | template <class _ExecutionPolicy, class _BidirectionalIterator, class _ForwardIterator> |
252 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
253 | reverse_copy(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __last, |
254 | _ForwardIterator __d_first); |
255 | |
256 | // [alg.rotate] |
257 | |
258 | template <class _ExecutionPolicy, class _ForwardIterator> |
259 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
260 | rotate(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last); |
261 | |
262 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
263 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
264 | rotate_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __middle, _ForwardIterator1 __last, |
265 | _ForwardIterator2 __result); |
266 | |
267 | // [alg.partitions] |
268 | |
269 | template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate> |
270 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
271 | is_partitioned(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred); |
272 | |
273 | template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate> |
274 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
275 | partition(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred); |
276 | |
277 | template <class _ExecutionPolicy, class _BidirectionalIterator, class _UnaryPredicate> |
278 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _BidirectionalIterator> |
279 | stable_partition(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __last, |
280 | _UnaryPredicate __pred); |
281 | |
282 | template <class _ExecutionPolicy, class _ForwardIterator, class _ForwardIterator1, class _ForwardIterator2, |
283 | class _UnaryPredicate> |
284 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> |
285 | partition_copy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, |
286 | _ForwardIterator1 __out_true, _ForwardIterator2 __out_false, _UnaryPredicate __pred); |
287 | |
288 | // [alg.sort] |
289 | |
290 | template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare> |
291 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
292 | sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp); |
293 | |
294 | template <class _ExecutionPolicy, class _RandomAccessIterator> |
295 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
296 | sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last); |
297 | |
298 | // [stable.sort] |
299 | |
300 | template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare> |
301 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
302 | stable_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp); |
303 | |
304 | template <class _ExecutionPolicy, class _RandomAccessIterator> |
305 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
306 | stable_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last); |
307 | |
308 | // [mismatch] |
309 | |
310 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> |
311 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> |
312 | mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
313 | _ForwardIterator2 __last2, _BinaryPredicate __pred); |
314 | |
315 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> |
316 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> |
317 | mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
318 | _BinaryPredicate __pred); |
319 | |
320 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
321 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> |
322 | mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
323 | _ForwardIterator2 __last2); |
324 | |
325 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
326 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> |
327 | mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2); |
328 | |
329 | // [alg.equal] |
330 | |
331 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> |
332 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
333 | equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
334 | _BinaryPredicate __p); |
335 | |
336 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
337 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
338 | equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2); |
339 | |
340 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> |
341 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
342 | equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
343 | _ForwardIterator2 __last2, _BinaryPredicate __p); |
344 | |
345 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
346 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
347 | equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
348 | _ForwardIterator2 __last2); |
349 | |
350 | // [alg.move] |
351 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
352 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> |
353 | move(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __d_first); |
354 | |
355 | // [partial.sort] |
356 | |
357 | template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare> |
358 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
359 | partial_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __middle, |
360 | _RandomAccessIterator __last, _Compare __comp); |
361 | |
362 | template <class _ExecutionPolicy, class _RandomAccessIterator> |
363 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
364 | partial_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __middle, |
365 | _RandomAccessIterator __last); |
366 | |
367 | // [partial.sort.copy] |
368 | |
369 | template <class _ExecutionPolicy, class _ForwardIterator, class _RandomAccessIterator, class _Compare> |
370 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator> |
371 | partial_sort_copy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, |
372 | _RandomAccessIterator __d_first, _RandomAccessIterator __d_last, _Compare __comp); |
373 | |
374 | template <class _ExecutionPolicy, class _ForwardIterator, class _RandomAccessIterator> |
375 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator> |
376 | partial_sort_copy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, |
377 | _RandomAccessIterator __d_first, _RandomAccessIterator __d_last); |
378 | |
379 | // [is.sorted] |
380 | template <class _ExecutionPolicy, class _ForwardIterator, class _Compare> |
381 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
382 | is_sorted_until(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); |
383 | |
384 | template <class _ExecutionPolicy, class _ForwardIterator> |
385 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
386 | is_sorted_until(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); |
387 | |
388 | template <class _ExecutionPolicy, class _ForwardIterator, class _Compare> |
389 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
390 | is_sorted(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); |
391 | |
392 | template <class _ExecutionPolicy, class _ForwardIterator> |
393 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
394 | is_sorted(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); |
395 | |
396 | // [alg.nth.element] |
397 | |
398 | template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare> |
399 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
400 | nth_element(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __nth, |
401 | _RandomAccessIterator __last, _Compare __comp); |
402 | |
403 | template <class _ExecutionPolicy, class _RandomAccessIterator> |
404 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
405 | nth_element(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __nth, |
406 | _RandomAccessIterator __last); |
407 | |
408 | // [alg.merge] |
409 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator, |
410 | class _Compare> |
411 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
412 | merge(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
413 | _ForwardIterator2 __last2, _ForwardIterator __d_first, _Compare __comp); |
414 | |
415 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator> |
416 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
417 | merge(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
418 | _ForwardIterator2 __last2, _ForwardIterator __d_first); |
419 | |
420 | template <class _ExecutionPolicy, class _BidirectionalIterator, class _Compare> |
421 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
422 | inplace_merge(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __middle, |
423 | _BidirectionalIterator __last, _Compare __comp); |
424 | |
425 | template <class _ExecutionPolicy, class _BidirectionalIterator> |
426 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> |
427 | inplace_merge(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __middle, |
428 | _BidirectionalIterator __last); |
429 | |
430 | // [includes] |
431 | |
432 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Compare> |
433 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
434 | includes(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
435 | _ForwardIterator2 __last2, _Compare __comp); |
436 | |
437 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
438 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
439 | includes(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
440 | _ForwardIterator2 __last2); |
441 | |
442 | // [set.union] |
443 | |
444 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator, |
445 | class _Compare> |
446 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
447 | set_union(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
448 | _ForwardIterator2 __last2, _ForwardIterator __result, _Compare __comp); |
449 | |
450 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator> |
451 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
452 | set_union(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, |
453 | _ForwardIterator2 __last2, _ForwardIterator __result); |
454 | |
455 | // [set.intersection] |
456 | |
457 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator, |
458 | class _Compare> |
459 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
460 | set_intersection(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, |
461 | _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result, _Compare __comp); |
462 | |
463 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator> |
464 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
465 | set_intersection(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, |
466 | _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result); |
467 | |
468 | // [set.difference] |
469 | |
470 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator, |
471 | class _Compare> |
472 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
473 | set_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, |
474 | _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result, _Compare __comp); |
475 | |
476 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator> |
477 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
478 | set_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, |
479 | _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result); |
480 | |
481 | // [set.symmetric.difference] |
482 | |
483 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator, |
484 | class _Compare> |
485 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
486 | set_symmetric_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, |
487 | _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator result, |
488 | _Compare __comp); |
489 | |
490 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator> |
491 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
492 | set_symmetric_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, |
493 | _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result); |
494 | |
495 | // [is.heap] |
496 | template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare> |
497 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator> |
498 | is_heap_until(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp); |
499 | |
500 | template <class _ExecutionPolicy, class _RandomAccessIterator> |
501 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator> |
502 | is_heap_until(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last); |
503 | |
504 | template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare> |
505 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
506 | is_heap(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp); |
507 | |
508 | template <class _ExecutionPolicy, class _RandomAccessIterator> |
509 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
510 | is_heap(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last); |
511 | |
512 | // [alg.min.max] |
513 | |
514 | template <class _ExecutionPolicy, class _ForwardIterator, class _Compare> |
515 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
516 | min_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); |
517 | |
518 | template <class _ExecutionPolicy, class _ForwardIterator> |
519 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
520 | min_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); |
521 | |
522 | template <class _ExecutionPolicy, class _ForwardIterator, class _Compare> |
523 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
524 | max_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); |
525 | |
526 | template <class _ExecutionPolicy, class _ForwardIterator> |
527 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> |
528 | max_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); |
529 | |
530 | template <class _ExecutionPolicy, class _ForwardIterator, class _Compare> |
531 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator, _ForwardIterator>> |
532 | minmax_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); |
533 | |
534 | template <class _ExecutionPolicy, class _ForwardIterator> |
535 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator, _ForwardIterator>> |
536 | minmax_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); |
537 | |
538 | // [alg.lex.comparison] |
539 | |
540 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Compare> |
541 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
542 | lexicographical_compare(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, |
543 | _ForwardIterator2 __first2, _ForwardIterator2 __last2, _Compare __comp); |
544 | |
545 | template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2> |
546 | __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> |
547 | lexicographical_compare(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, |
548 | _ForwardIterator2 __first2, _ForwardIterator2 __last2); |
549 | |
550 | } // namespace std |
551 | #endif /* __PSTL_glue_algorithm_defs_H */ |
552 | |