Bump version to 19.1.0 (final)
[llvm-project.git] / libcxx / modules / std / algorithm.inc
blob3c2139cd64ee4906bd7a67ca28a5d4b2418127f2
1 // -*- C++ -*-
2 //===----------------------------------------------------------------------===//
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 //===----------------------------------------------------------------------===//
10 export namespace std {
11   namespace ranges {
12     // [algorithms.results], algorithm result types
13     using std::ranges::in_found_result;
14     using std::ranges::in_fun_result;
15     using std::ranges::in_in_out_result;
16     using std::ranges::in_in_result;
17     using std::ranges::in_out_out_result;
18     using std::ranges::in_out_result;
19 #if _LIBCPP_STD_VER >= 23
20     using std::ranges::in_value_result;
21 #endif
22     using std::ranges::min_max_result;
23     // using std::ranges::out_value_result;
24   } // namespace ranges
26   // [alg.nonmodifying], non-modifying sequence operations
27   // [alg.all.of], all of
28   using std::all_of;
29   namespace ranges {
30     using std::ranges::all_of;
31   }
33   // [alg.any.of], any of
34   using std::any_of;
35   namespace ranges {
36     using std::ranges::any_of;
37   }
39   // [alg.none.of], none of
40   using std::none_of;
41   namespace ranges {
42     using std::ranges::none_of;
43   }
45 #if _LIBCPP_STD_VER >= 23
46   // [alg.contains], contains
47   namespace ranges {
48     using std::ranges::contains;
49     using std::ranges::contains_subrange;
50   } // namespace ranges
51 #endif // _LIBCPP_STD_VER >= 23
53   // [alg.foreach], for each
54   using std::for_each;
56   namespace ranges {
57     using std::ranges::for_each;
58     using std::ranges::for_each_result;
59   } // namespace ranges
61   using std::for_each_n;
63   namespace ranges {
64     using std::ranges::for_each_n_result;
66     using std::ranges::for_each_n;
67   } // namespace ranges
69   // [alg.find], find
70   using std::find;
71   using std::find_if;
72   using std::find_if_not;
74   namespace ranges {
75     using std::ranges::find;
76     using std::ranges::find_if;
77     using std::ranges::find_if_not;
78   } // namespace ranges
80 #if _LIBCPP_STD_VER >= 23
81   // [alg.find.last], find last
82   namespace ranges {
83     using std::ranges::find_last;
84     using std::ranges::find_last_if;
85     using std::ranges::find_last_if_not;
86   } // namespace ranges
87 #endif
89   // [alg.find.end], find end
90   using std::find_end;
92   namespace ranges {
93     using std::ranges::find_end;
94   }
96   // [alg.find.first.of], find first
97   using std::find_first_of;
99   namespace ranges {
100     using std::ranges::find_first_of;
101   }
103   // [alg.adjacent.find], adjacent find
104   using std::adjacent_find;
106   namespace ranges {
107     using std::ranges::adjacent_find;
108   }
110   // [alg.count], count
111   using std::count;
112   using std::count_if;
114   namespace ranges {
115     using std::ranges::count;
116     using std::ranges::count_if;
117   } // namespace ranges
119   // [mismatch], mismatch
120   using std::mismatch;
122   namespace ranges {
123     using std::ranges::mismatch_result;
125     using std::ranges::mismatch;
126   } // namespace ranges
128   // [alg.equal], equal
129   using std::equal;
131   namespace ranges {
132     using std::ranges::equal;
133   }
135   // [alg.is.permutation], is permutation
136   using std::is_permutation;
138   namespace ranges {
139     using std::ranges::is_permutation;
140   }
142   // [alg.search], search
143   using std::search;
145   namespace ranges {
146     using std::ranges::search;
147   }
149   using std::search_n;
151   namespace ranges {
152     using std::ranges::search_n;
153   }
155   namespace ranges {
156 #if _LIBCPP_STD_VER >= 23
157     // [alg.starts.with], starts with
158     using std::ranges::starts_with;
160     // [alg.ends.with], ends with
161     using std::ranges::ends_with;
163     // [alg.fold], fold
164     using std::ranges::fold_left;
165     using std::ranges::fold_left_with_iter;
166     using std::ranges::fold_left_with_iter_result;
167 #  if 0
168     using std::ranges::fold_left_first;
169     using std::ranges::fold_right;
170     using std::ranges::fold_right_last;
171     using std::ranges::fold_left_with_iter;
172     using std::ranges::fold_left_first_with_iter;
173     using std::ranges::fold_left_first_with_iter;
174 #  endif
175 #endif // _LIBCPP_STD_VER >= 23
176   }    // namespace ranges
178   // [alg.modifying.operations], mutating sequence operations
179   // [alg.copy], copy
180   using std::copy;
182   namespace ranges {
183     using std::ranges::copy;
184     using std::ranges::copy_result;
185   } // namespace ranges
187   using std::copy_n;
189   namespace ranges {
190     using std::ranges::copy_n;
191     using std::ranges::copy_n_result;
192   } // namespace ranges
194   using std::copy_if;
196   namespace ranges {
197     using std::ranges::copy_if;
198     using std::ranges::copy_if_result;
199   } // namespace ranges
201   using std::copy_backward;
203   namespace ranges {
204     using std::ranges::copy_backward;
205     using std::ranges::copy_backward_result;
206   } // namespace ranges
208   // [alg.move], move
209   using std::move;
211   namespace ranges {
212     using std::ranges::move;
213     using std::ranges::move_result;
214   } // namespace ranges
216   using std::move_backward;
218   namespace ranges {
219     using std::ranges::move_backward;
220     using std::ranges::move_backward_result;
221   } // namespace ranges
223   // [alg.swap], swap
224   using std::swap_ranges;
226   namespace ranges {
227     using std::ranges::swap_ranges;
228     using std::ranges::swap_ranges_result;
229   } // namespace ranges
231   using std::iter_swap;
233   // [alg.transform], transform
234   using std::transform;
236   namespace ranges {
237     using std::ranges::binary_transform_result;
238     using std::ranges::unary_transform_result;
240     using std::ranges::transform;
242   } // namespace ranges
244   using std::replace;
245   using std::replace_if;
247   namespace ranges {
248     using std::ranges::replace;
249     using std::ranges::replace_if;
250   } // namespace ranges
252   using std::replace_copy;
253   using std::replace_copy_if;
255   namespace ranges {
256     using std::ranges::replace_copy;
257     using std::ranges::replace_copy_if;
258     using std::ranges::replace_copy_if_result;
259     using std::ranges::replace_copy_result;
260   } // namespace ranges
262   // [alg.fill], fill
263   using std::fill;
264   using std::fill_n;
266   namespace ranges {
267     using std::ranges::fill;
268     using std::ranges::fill_n;
269   } // namespace ranges
271   // [alg.generate], generate
272   using std::generate;
273   using std::generate_n;
275   namespace ranges {
276     using std::ranges::generate;
277     using std::ranges::generate_n;
278   } // namespace ranges
280   // [alg.remove], remove
281   using std::remove;
282   using std::remove_if;
284   namespace ranges {
285     using std::ranges::remove;
286     using std::ranges::remove_if;
287   } // namespace ranges
289   using std::remove_copy;
290   using std::remove_copy_if;
291   namespace ranges {
292     using std::ranges::remove_copy;
293     using std::ranges::remove_copy_if;
294     using std::ranges::remove_copy_if_result;
295     using std::ranges::remove_copy_result;
296   } // namespace ranges
298   // [alg.unique], unique
299   using std::unique;
301   namespace ranges {
302     using std::ranges::unique;
303   }
305   using std::unique_copy;
307   namespace ranges {
308     using std::ranges::unique_copy;
309     using std::ranges::unique_copy_result;
310   } // namespace ranges
312   // [alg.reverse], reverse
313   using std::reverse;
315   namespace ranges {
316     using std::ranges::reverse;
317   }
319   using std::reverse_copy;
321   namespace ranges {
322     using std::ranges::reverse_copy;
323     using std::ranges::reverse_copy_result;
324   } // namespace ranges
326   // [alg.rotate], rotate
327   using std::rotate;
329   namespace ranges {
330     using std::ranges::rotate;
331   }
333   using std::rotate_copy;
335   namespace ranges {
336     using std::ranges::rotate_copy;
337     using std::ranges::rotate_copy_result;
338   } // namespace ranges
340   // [alg.random.sample], sample
341   using std::sample;
343   namespace ranges {
344     using std::ranges::sample;
345   }
347   // [alg.random.shuffle], shuffle
348   using std::shuffle;
350   namespace ranges {
351     using std::ranges::shuffle;
352   }
354   // [alg.shift], shift
355   using std::shift_left;
357   namespace ranges {
358     // using std::ranges::shift_left;
359   }
361   using std::shift_right;
363   namespace ranges {
364     // using std::ranges::shift_right;
365   }
367   // [alg.sorting], sorting and related operations
368   // [alg.sort], sorting
369   using std::sort;
371   namespace ranges {
372     using std::ranges::sort;
373   }
375   using std::stable_sort;
377   namespace ranges {
378     using std::ranges::stable_sort;
379   }
381   using std::partial_sort;
383   namespace ranges {
384     using std::ranges::partial_sort;
385   }
386   using std::partial_sort_copy;
388   namespace ranges {
389     using std::ranges::partial_sort_copy;
390     using std::ranges::partial_sort_copy_result;
391   } // namespace ranges
393   using std::is_sorted;
394   using std::is_sorted_until;
396   namespace ranges {
397     using std::ranges::is_sorted;
398     using std::ranges::is_sorted_until;
399   } // namespace ranges
401   // [alg.nth.element], Nth element
402   using std::nth_element;
404   namespace ranges {
405     using std::ranges::nth_element;
406   }
408   // [alg.binary.search], binary search
409   using std::lower_bound;
411   namespace ranges {
412     using std::ranges::lower_bound;
413   }
415   using std::upper_bound;
417   namespace ranges {
418     using std::ranges::upper_bound;
419   }
421   using std::equal_range;
423   namespace ranges {
424     using std::ranges::equal_range;
425   }
427   using std::binary_search;
429   namespace ranges {
430     using std::ranges::binary_search;
431   }
433   // [alg.partitions], partitions
434   using std::is_partitioned;
436   namespace ranges {
437     using std::ranges::is_partitioned;
438   }
440   using std::partition;
442   namespace ranges {
443     using std::ranges::partition;
444   }
446   using std::stable_partition;
448   namespace ranges {
449     using std::ranges::stable_partition;
450   }
452   using std::partition_copy;
454   namespace ranges {
455     using std::ranges::partition_copy;
456     using std::ranges::partition_copy_result;
457   } // namespace ranges
459   using std::partition_point;
461   namespace ranges {
462     using std::ranges::partition_point;
463   }
464   // [alg.merge], merge
465   using std::merge;
466   namespace ranges {
467     using std::ranges::merge;
468     using std::ranges::merge_result;
469   } // namespace ranges
471   using std::inplace_merge;
473   namespace ranges {
474     using std::ranges::inplace_merge;
475   }
477   // [alg.set.operations], set operations
478   using std::includes;
479   namespace ranges {
480     using std::ranges::includes;
481   }
483   using std::set_union;
485   namespace ranges {
486     using std::ranges::set_union;
487     using std::ranges::set_union_result;
488   } // namespace ranges
490   using std::set_intersection;
491   namespace ranges {
492     using std::ranges::set_intersection;
493     using std::ranges::set_intersection_result;
494   } // namespace ranges
496   using std::set_difference;
498   namespace ranges {
499     using std::ranges::set_difference;
500     using std::ranges::set_difference_result;
501   } // namespace ranges
503   using std::set_symmetric_difference;
505   namespace ranges {
506     using std::ranges::set_symmetric_difference_result;
508     using std::ranges::set_symmetric_difference;
509   } // namespace ranges
511   // [alg.heap.operations], heap operations
512   using std::push_heap;
514   namespace ranges {
515     using std::ranges::push_heap;
516   }
518   using std::pop_heap;
520   namespace ranges {
521     using std::ranges::pop_heap;
522   }
524   using std::make_heap;
526   namespace ranges {
527     using std::ranges::make_heap;
528   }
530   using std::sort_heap;
532   namespace ranges {
533     using std::ranges::sort_heap;
534   }
536   using std::is_heap;
538   namespace ranges {
539     using std::ranges::is_heap;
540   }
542   using std::is_heap_until;
544   namespace ranges {
545     using std::ranges::is_heap_until;
546   }
548   // [alg.min.max], minimum and maximum
549   using std::min;
551   namespace ranges {
552     using std::ranges::min;
553   }
555   using std::max;
557   namespace ranges {
558     using std::ranges::max;
559   }
561   using std::minmax;
563   namespace ranges {
564     using std::ranges::minmax_result;
566     using std::ranges::minmax;
567   } // namespace ranges
569   using std::min_element;
571   namespace ranges {
572     using std::ranges::min_element;
573   }
575   using std::max_element;
577   namespace ranges {
578     using std::ranges::max_element;
579   }
581   using std::minmax_element;
583   namespace ranges {
584     using std::ranges::minmax_element_result;
586     using std::ranges::minmax_element;
587   } // namespace ranges
588     // [alg.clamp], bounded value
589   using std::clamp;
591   namespace ranges {
592     using std::ranges::clamp;
593   }
595   // [alg.lex.comparison], lexicographical comparison
596   using std::lexicographical_compare;
598   namespace ranges {
599     using std::ranges::lexicographical_compare;
600   }
602   // [alg.three.way], three-way comparison algorithms
603   using std::lexicographical_compare_three_way;
605   // [alg.permutation.generators], permutations
606   using std::next_permutation;
608   namespace ranges {
609     using std::ranges::next_permutation_result;
611     using std::ranges::next_permutation;
612   } // namespace ranges
614   using std::prev_permutation;
616   namespace ranges {
617     using std::ranges::prev_permutation_result;
619     using std::ranges::prev_permutation;
620   } // namespace ranges
622 } // namespace std