[libc++] Update the commented "synopsis" in <algorithm> to match current reality.

The synopsis now reflects what's implemented. It does NOT reflect
all of what's specified in C++20. The "constexpr in C++20" markings
are still missing from these 12 algorithms, because they are still
unimplemented by libc++:

    reverse partition sort nth_element next_permutation prev_permutation
    push_heap pop_heap make_heap sort_heap partial_sort partial_sort_copy

All of the above algorithms were excluded from [P0202].

All of the above algorithms were made constexpr in [P0879] (along with
swap_ranges, iter_swap, and rotate — we've already implemented those three).

Differential Revision: https://reviews.llvm.org/D92255
This commit is contained in:
Arthur O'Dwyer 2020-12-02 20:02:18 -05:00
parent 14098cf6c0
commit b8bc4e153f
1 changed files with 50 additions and 50 deletions

View File

@ -47,16 +47,16 @@ template <class InputIterator, class Predicate>
find_if(InputIterator first, InputIterator last, Predicate pred);
template<class InputIterator, class Predicate>
InputIterator // constexpr in C++20
constexpr InputIterator // constexpr in C++20
find_if_not(InputIterator first, InputIterator last, Predicate pred);
template <class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 // constexpr in C++20
constexpr ForwardIterator1 // constexpr in C++20
find_end(ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2);
template <class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
ForwardIterator1 // constexpr in C++20
constexpr ForwardIterator1 // constexpr in C++20
find_end(ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred);
@ -185,11 +185,11 @@ template <class BidirectionalIterator1, class BidirectionalIterator2>
BidirectionalIterator2 result);
template <class ForwardIterator1, class ForwardIterator2>
ForwardIterator2
constexpr ForwardIterator2 // constexpr in C++20
swap_ranges(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2);
template <class ForwardIterator1, class ForwardIterator2>
void
constexpr void // constexpr in C++20
iter_swap(ForwardIterator1 a, ForwardIterator2 b);
template <class InputIterator, class OutputIterator, class UnaryOperation>
@ -251,19 +251,19 @@ template <class InputIterator, class OutputIterator, class Predicate>
remove_copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate pred);
template <class ForwardIterator>
ForwardIterator
constexpr ForwardIterator // constexpr in C++20
unique(ForwardIterator first, ForwardIterator last);
template <class ForwardIterator, class BinaryPredicate>
ForwardIterator
constexpr ForwardIterator // constexpr in C++20
unique(ForwardIterator first, ForwardIterator last, BinaryPredicate pred);
template <class InputIterator, class OutputIterator>
OutputIterator
constexpr OutputIterator // constexpr in C++20
unique_copy(InputIterator first, InputIterator last, OutputIterator result);
template <class InputIterator, class OutputIterator, class BinaryPredicate>
OutputIterator
constexpr OutputIterator // constexpr in C++20
unique_copy(InputIterator first, InputIterator last, OutputIterator result, BinaryPredicate pred);
template <class BidirectionalIterator>
@ -275,11 +275,11 @@ template <class BidirectionalIterator, class OutputIterator>
reverse_copy(BidirectionalIterator first, BidirectionalIterator last, OutputIterator result);
template <class ForwardIterator>
ForwardIterator
constexpr ForwardIterator // constexpr in C++20
rotate(ForwardIterator first, ForwardIterator middle, ForwardIterator last);
template <class ForwardIterator, class OutputIterator>
OutputIterator
constexpr OutputIterator // constexpr in C++20
rotate_copy(ForwardIterator first, ForwardIterator middle, ForwardIterator last, OutputIterator result);
template <class RandomAccessIterator>
@ -329,7 +329,7 @@ template <class ForwardIterator>
is_sorted(ForwardIterator first, ForwardIterator last);
template <class ForwardIterator, class Compare>
bool
constexpr bool // constexpr in C++20
is_sorted(ForwardIterator first, ForwardIterator last, Compare comp);
template<class ForwardIterator>
@ -529,82 +529,82 @@ template <class RandomAccessIterator, class Compare>
is_heap_until(RandomAccessIterator first, RandomAccessiterator last, Compare comp);
template <class ForwardIterator>
ForwardIterator
min_element(ForwardIterator first, ForwardIterator last); // constexpr in C++14
constexpr ForwardIterator // constexpr in C++14
min_element(ForwardIterator first, ForwardIterator last);
template <class ForwardIterator, class Compare>
ForwardIterator
min_element(ForwardIterator first, ForwardIterator last, Compare comp); // constexpr in C++14
constexpr ForwardIterator // constexpr in C++14
min_element(ForwardIterator first, ForwardIterator last, Compare comp);
template <class T>
const T&
min(const T& a, const T& b); // constexpr in C++14
constexpr const T& // constexpr in C++14
min(const T& a, const T& b);
template <class T, class Compare>
const T&
min(const T& a, const T& b, Compare comp); // constexpr in C++14
constexpr const T& // constexpr in C++14
min(const T& a, const T& b, Compare comp);
template<class T>
T
min(initializer_list<T> t); // constexpr in C++14
constexpr T // constexpr in C++14
min(initializer_list<T> t);
template<class T, class Compare>
T
min(initializer_list<T> t, Compare comp); // constexpr in C++14
constexpr T // constexpr in C++14
min(initializer_list<T> t, Compare comp);
template<class T>
constexpr const T& clamp( const T& v, const T& lo, const T& hi ); // C++17
constexpr const T& clamp(const T& v, const T& lo, const T& hi); // C++17
template<class T, class Compare>
constexpr const T& clamp( const T& v, const T& lo, const T& hi, Compare comp ); // C++17
constexpr const T& clamp(const T& v, const T& lo, const T& hi, Compare comp); // C++17
template <class ForwardIterator>
ForwardIterator
max_element(ForwardIterator first, ForwardIterator last); // constexpr in C++14
constexpr ForwardIterator // constexpr in C++14
max_element(ForwardIterator first, ForwardIterator last);
template <class ForwardIterator, class Compare>
ForwardIterator
max_element(ForwardIterator first, ForwardIterator last, Compare comp); // constexpr in C++14
constexpr ForwardIterator // constexpr in C++14
max_element(ForwardIterator first, ForwardIterator last, Compare comp);
template <class T>
const T&
max(const T& a, const T& b); // constexpr in C++14
constexpr const T& // constexpr in C++14
max(const T& a, const T& b);
template <class T, class Compare>
const T&
max(const T& a, const T& b, Compare comp); // constexpr in C++14
constexpr const T& // constexpr in C++14
max(const T& a, const T& b, Compare comp);
template<class T>
T
max(initializer_list<T> t); // constexpr in C++14
constexpr T // constexpr in C++14
max(initializer_list<T> t);
template<class T, class Compare>
T
max(initializer_list<T> t, Compare comp); // constexpr in C++14
constexpr T // constexpr in C++14
max(initializer_list<T> t, Compare comp);
template<class ForwardIterator>
pair<ForwardIterator, ForwardIterator>
minmax_element(ForwardIterator first, ForwardIterator last); // constexpr in C++14
constexpr pair<ForwardIterator, ForwardIterator> // constexpr in C++14
minmax_element(ForwardIterator first, ForwardIterator last);
template<class ForwardIterator, class Compare>
pair<ForwardIterator, ForwardIterator>
minmax_element(ForwardIterator first, ForwardIterator last, Compare comp); // constexpr in C++14
constexpr pair<ForwardIterator, ForwardIterator> // constexpr in C++14
minmax_element(ForwardIterator first, ForwardIterator last, Compare comp);
template<class T>
pair<const T&, const T&>
minmax(const T& a, const T& b); // constexpr in C++14
constexpr pair<const T&, const T&> // constexpr in C++14
minmax(const T& a, const T& b);
template<class T, class Compare>
pair<const T&, const T&>
minmax(const T& a, const T& b, Compare comp); // constexpr in C++14
constexpr pair<const T&, const T&> // constexpr in C++14
minmax(const T& a, const T& b, Compare comp);
template<class T>
pair<T, T>
minmax(initializer_list<T> t); // constexpr in C++14
constexpr pair<T, T> // constexpr in C++14
minmax(initializer_list<T> t);
template<class T, class Compare>
pair<T, T>
minmax(initializer_list<T> t, Compare comp); // constexpr in C++14
constexpr pair<T, T> // constexpr in C++14
minmax(initializer_list<T> t, Compare comp);
template <class InputIterator1, class InputIterator2>
constexpr bool // constexpr in C++20