|
2011 | 2011 | }
|
2012 | 2012 |
|
2013 | 2013 | template<class RandomAccessIterator>
|
2014 |
| - void stable_sort(RandomAccessIterator first, RandomAccessIterator last); |
| 2014 | + constexpr void stable_sort(RandomAccessIterator first, RandomAccessIterator last); |
2015 | 2015 | template<class RandomAccessIterator, class Compare>
|
2016 |
| - void stable_sort(RandomAccessIterator first, RandomAccessIterator last, |
| 2016 | + constexpr void stable_sort(RandomAccessIterator first, RandomAccessIterator last, |
2017 | 2017 | Compare comp);
|
2018 | 2018 | template<class ExecutionPolicy, class RandomAccessIterator>
|
2019 | 2019 | void stable_sort(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
|
|
2027 | 2027 | template<@\libconcept{random_access_iterator}@ I, @\libconcept{sentinel_for}@<I> S, class Comp = ranges::less,
|
2028 | 2028 | class Proj = identity>
|
2029 | 2029 | requires @\libconcept{sortable}@<I, Comp, Proj>
|
2030 |
| - I stable_sort(I first, S last, Comp comp = {}, Proj proj = {}); |
| 2030 | + constexpr I stable_sort(I first, S last, Comp comp = {}, Proj proj = {}); |
2031 | 2031 | template<@\libconcept{random_access_range}@ R, class Comp = ranges::less, class Proj = identity>
|
2032 | 2032 | requires @\libconcept{sortable}@<iterator_t<R>, Comp, Proj>
|
2033 |
| - borrowed_iterator_t<R> |
| 2033 | + constexpr borrowed_iterator_t<R> |
2034 | 2034 | stable_sort(R&& r, Comp comp = {}, Proj proj = {});
|
2035 | 2035 | }
|
2036 | 2036 |
|
|
2311 | 2311 | }
|
2312 | 2312 |
|
2313 | 2313 | template<class BidirectionalIterator, class Predicate>
|
2314 |
| - BidirectionalIterator stable_partition(BidirectionalIterator first, |
2315 |
| - BidirectionalIterator last, |
2316 |
| - Predicate pred); |
| 2314 | + constexpr BidirectionalIterator stable_partition(BidirectionalIterator first, |
| 2315 | + BidirectionalIterator last, |
| 2316 | + Predicate pred); |
2317 | 2317 | template<class ExecutionPolicy, class BidirectionalIterator, class Predicate>
|
2318 | 2318 | BidirectionalIterator stable_partition(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
|
2319 | 2319 | BidirectionalIterator first,
|
|
2324 | 2324 | template<@\libconcept{bidirectional_iterator}@ I, @\libconcept{sentinel_for}@<I> S, class Proj = identity,
|
2325 | 2325 | @\libconcept{indirect_unary_predicate}@<projected<I, Proj>> Pred>
|
2326 | 2326 | requires @\libconcept{permutable}@<I>
|
2327 |
| - subrange<I> stable_partition(I first, S last, Pred pred, Proj proj = {}); |
| 2327 | + constexpr subrange<I> stable_partition(I first, S last, Pred pred, Proj proj = {}); |
2328 | 2328 | template<@\libconcept{bidirectional_range}@ R, class Proj = identity,
|
2329 | 2329 | @\libconcept{indirect_unary_predicate}@<projected<iterator_t<R>, Proj>> Pred>
|
2330 | 2330 | requires @\libconcept{permutable}@<iterator_t<R>>
|
2331 |
| - borrowed_subrange_t<R> stable_partition(R&& r, Pred pred, Proj proj = {}); |
| 2331 | + constexpr borrowed_subrange_t<R> stable_partition(R&& r, Pred pred, Proj proj = {}); |
2332 | 2332 | }
|
2333 | 2333 |
|
2334 | 2334 | template<class InputIterator, class OutputIterator1,
|
|
2427 | 2427 | }
|
2428 | 2428 |
|
2429 | 2429 | template<class BidirectionalIterator>
|
2430 |
| - void inplace_merge(BidirectionalIterator first, |
2431 |
| - BidirectionalIterator middle, |
2432 |
| - BidirectionalIterator last); |
| 2430 | + constexpr void inplace_merge(BidirectionalIterator first, |
| 2431 | + BidirectionalIterator middle, |
| 2432 | + BidirectionalIterator last); |
2433 | 2433 | template<class BidirectionalIterator, class Compare>
|
2434 |
| - void inplace_merge(BidirectionalIterator first, |
2435 |
| - BidirectionalIterator middle, |
2436 |
| - BidirectionalIterator last, Compare comp); |
| 2434 | + constexpr void inplace_merge(BidirectionalIterator first, |
| 2435 | + BidirectionalIterator middle, |
| 2436 | + BidirectionalIterator last, Compare comp); |
2437 | 2437 | template<class ExecutionPolicy, class BidirectionalIterator>
|
2438 | 2438 | void inplace_merge(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads}
|
2439 | 2439 | BidirectionalIterator first,
|
|
2449 | 2449 | template<@\libconcept{bidirectional_iterator}@ I, @\libconcept{sentinel_for}@<I> S, class Comp = ranges::less,
|
2450 | 2450 | class Proj = identity>
|
2451 | 2451 | requires @\libconcept{sortable}@<I, Comp, Proj>
|
2452 |
| - I inplace_merge(I first, I middle, S last, Comp comp = {}, Proj proj = {}); |
| 2452 | + constexpr I inplace_merge(I first, I middle, S last, Comp comp = {}, Proj proj = {}); |
2453 | 2453 | template<@\libconcept{bidirectional_range}@ R, class Comp = ranges::less, class Proj = identity>
|
2454 | 2454 | requires @\libconcept{sortable}@<iterator_t<R>, Comp, Proj>
|
2455 |
| - borrowed_iterator_t<R> |
| 2455 | + constexpr borrowed_iterator_t<R> |
2456 | 2456 | inplace_merge(R&& r, iterator_t<R> middle, Comp comp = {},
|
2457 | 2457 | Proj proj = {});
|
2458 | 2458 | }
|
|
0 commit comments