Loading libcxx/include/algorithm +18 −18 Original line number Diff line number Diff line Loading @@ -267,7 +267,7 @@ template <class InputIterator, class OutputIterator, class BinaryPredicate> unique_copy(InputIterator first, InputIterator last, OutputIterator result, BinaryPredicate pred); template <class BidirectionalIterator> void constexpr void // constexpr in C++20 reverse(BidirectionalIterator first, BidirectionalIterator last); template <class BidirectionalIterator, class OutputIterator> Loading Loading @@ -316,7 +316,7 @@ template <class InputIterator, class Predicate> is_partitioned(InputIterator first, InputIterator last, Predicate pred); template <class ForwardIterator, class Predicate> ForwardIterator constexpr ForwardIterator // constexpr in C++20 partition(ForwardIterator first, ForwardIterator last, Predicate pred); template <class InputIterator, class OutputIterator1, Loading Loading @@ -626,19 +626,19 @@ template <class InputIterator1, class InputIterator2, class Compare> InputIterator2 first2, InputIterator2 last2, Compare comp); template <class BidirectionalIterator> bool constexpr bool // constexpr in C++20 next_permutation(BidirectionalIterator first, BidirectionalIterator last); template <class BidirectionalIterator, class Compare> bool constexpr bool // constexpr in C++20 next_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp); template <class BidirectionalIterator> bool constexpr bool // constexpr in C++20 prev_permutation(BidirectionalIterator first, BidirectionalIterator last); template <class BidirectionalIterator, class Compare> bool constexpr bool // constexpr in C++20 prev_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp); } // std Loading Loading @@ -2321,7 +2321,7 @@ unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __res // reverse template <class _BidirectionalIterator> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 void __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, bidirectional_iterator_tag) { Loading @@ -2335,7 +2335,7 @@ __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, bidirec } template <class _RandomAccessIterator> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 void __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, random_access_iterator_tag) { Loading @@ -2345,7 +2345,7 @@ __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, random_ac } template <class _BidirectionalIterator> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 void reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) { Loading Loading @@ -3393,7 +3393,7 @@ is_partitioned(_InputIterator __first, _InputIterator __last, _Predicate __pred) // partition template <class _Predicate, class _ForwardIterator> _ForwardIterator _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator __partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, forward_iterator_tag) { while (true) Loading @@ -3416,7 +3416,7 @@ __partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred } template <class _Predicate, class _BidirectionalIterator> _BidirectionalIterator _LIBCPP_CONSTEXPR_AFTER_CXX17 _BidirectionalIterator __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, bidirectional_iterator_tag) { Loading @@ -3441,7 +3441,7 @@ __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Pred } template <class _ForwardIterator, class _Predicate> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { Loading Loading @@ -5760,7 +5760,7 @@ lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, // next_permutation template <class _Compare, class _BidirectionalIterator> bool _LIBCPP_CONSTEXPR_AFTER_CXX17 bool __next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { _BidirectionalIterator __i = __last; Loading @@ -5787,7 +5787,7 @@ __next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last } template <class _BidirectionalIterator, class _Compare> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { Loading @@ -5796,7 +5796,7 @@ next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, } template <class _BidirectionalIterator> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) { Loading @@ -5807,7 +5807,7 @@ next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) // prev_permutation template <class _Compare, class _BidirectionalIterator> bool _LIBCPP_CONSTEXPR_AFTER_CXX17 bool __prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { _BidirectionalIterator __i = __last; Loading @@ -5834,7 +5834,7 @@ __prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last } template <class _BidirectionalIterator, class _Compare> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { Loading @@ -5843,7 +5843,7 @@ prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, } template <class _BidirectionalIterator> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) { Loading libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition.pass.cpp +12 −4 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ // template<BidirectionalIterator Iter, Predicate<auto, Iter::value_type> Pred> // requires ShuffleIterator<Iter> // && CopyConstructible<Pred> // Iter // constexpr Iter // constexpr in C++20 // partition(Iter first, Iter last, Pred pred); #include <algorithm> Loading @@ -23,11 +23,11 @@ struct is_odd { bool operator()(const int& i) const {return i & 1;} TEST_CONSTEXPR bool operator()(const int& i) const {return i & 1;} }; template <class Iter> void TEST_CONSTEXPR_CXX20 bool test() { // check mixed Loading Loading @@ -92,6 +92,8 @@ test() assert(is_odd()(*i)); for (int* i = base(r); i < ia+sa; ++i) assert(!is_odd()(*i)); return true; } int main(int, char**) Loading @@ -100,5 +102,11 @@ int main(int, char**) test<random_access_iterator<int*> >(); test<int*>(); #if TEST_STD_VER >= 20 static_assert(test<bidirectional_iterator<int*>>()); static_assert(test<random_access_iterator<int*>>()); static_assert(test<int*>()); #endif return 0; } libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse.pass.cpp +11 −3 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ // template<BidirectionalIterator Iter> // requires HasSwap<Iter::reference, Iter::reference> // void // constexpr void // constexpr in C++20 // reverse(Iter first, Iter last); #include <algorithm> Loading @@ -20,7 +20,7 @@ #include "test_iterators.h" template <class Iter> void TEST_CONSTEXPR_CXX20 bool test() { int ia[] = {0}; Loading Loading @@ -50,6 +50,8 @@ test() assert(id[1] == 2); assert(id[2] == 1); assert(id[3] == 0); return true; } int main(int, char**) Loading @@ -58,5 +60,11 @@ int main(int, char**) test<random_access_iterator<int*> >(); test<int*>(); #if TEST_STD_VER >= 20 static_assert(test<bidirectional_iterator<int*>>()); static_assert(test<random_access_iterator<int*>>()); static_assert(test<int*>()); #endif return 0; } libcxx/test/std/algorithms/alg.sorting/alg.permutation.generators/next_permutation.pass.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ // template<BidirectionalIterator Iter> // requires ShuffleIterator<Iter> // && LessThanComparable<Iter::value_type> // bool // constexpr bool // constexpr in C++20 // next_permutation(Iter first, Iter last); #include <algorithm> Loading @@ -22,7 +22,7 @@ #include <cstdio> int factorial(int x) TEST_CONSTEXPR_CXX14 int factorial(int x) { int r = 1; for (; x; --x) Loading @@ -31,7 +31,7 @@ int factorial(int x) } template <class Iter> void TEST_CONSTEXPR_CXX20 bool test() { int ia[] = {1, 2, 3, 4, 5, 6}; Loading @@ -56,6 +56,7 @@ test() } while (x); assert(count == factorial(e)); } return true; } int main(int, char**) Loading @@ -64,5 +65,11 @@ int main(int, char**) test<random_access_iterator<int*> >(); test<int*>(); #if TEST_STD_VER >= 20 static_assert(test<bidirectional_iterator<int*>>()); static_assert(test<random_access_iterator<int*>>()); static_assert(test<int*>()); #endif return 0; } libcxx/test/std/algorithms/alg.sorting/alg.permutation.generators/next_permutation_comp.pass.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ // template<BidirectionalIterator Iter, StrictWeakOrder<auto, Iter::value_type> Compare> // requires ShuffleIterator<Iter> // && CopyConstructible<Compare> // bool // constexpr bool // constexpr in C++20 // next_permutation(Iter first, Iter last, Compare comp); #include <algorithm> Loading @@ -23,7 +23,7 @@ #include <cstdio> int factorial(int x) TEST_CONSTEXPR_CXX14 int factorial(int x) { int r = 1; for (; x; --x) Loading @@ -32,7 +32,7 @@ int factorial(int x) } template <class Iter> void TEST_CONSTEXPR_CXX20 bool test() { typedef std::greater<int> C; Loading @@ -58,6 +58,7 @@ test() } while (x); assert(count == factorial(e)); } return true; } int main(int, char**) Loading @@ -66,5 +67,11 @@ int main(int, char**) test<random_access_iterator<int*> >(); test<int*>(); #if TEST_STD_VER >= 20 static_assert(test<bidirectional_iterator<int*>>()); static_assert(test<random_access_iterator<int*>>()); static_assert(test<int*>()); #endif return 0; } Loading
libcxx/include/algorithm +18 −18 Original line number Diff line number Diff line Loading @@ -267,7 +267,7 @@ template <class InputIterator, class OutputIterator, class BinaryPredicate> unique_copy(InputIterator first, InputIterator last, OutputIterator result, BinaryPredicate pred); template <class BidirectionalIterator> void constexpr void // constexpr in C++20 reverse(BidirectionalIterator first, BidirectionalIterator last); template <class BidirectionalIterator, class OutputIterator> Loading Loading @@ -316,7 +316,7 @@ template <class InputIterator, class Predicate> is_partitioned(InputIterator first, InputIterator last, Predicate pred); template <class ForwardIterator, class Predicate> ForwardIterator constexpr ForwardIterator // constexpr in C++20 partition(ForwardIterator first, ForwardIterator last, Predicate pred); template <class InputIterator, class OutputIterator1, Loading Loading @@ -626,19 +626,19 @@ template <class InputIterator1, class InputIterator2, class Compare> InputIterator2 first2, InputIterator2 last2, Compare comp); template <class BidirectionalIterator> bool constexpr bool // constexpr in C++20 next_permutation(BidirectionalIterator first, BidirectionalIterator last); template <class BidirectionalIterator, class Compare> bool constexpr bool // constexpr in C++20 next_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp); template <class BidirectionalIterator> bool constexpr bool // constexpr in C++20 prev_permutation(BidirectionalIterator first, BidirectionalIterator last); template <class BidirectionalIterator, class Compare> bool constexpr bool // constexpr in C++20 prev_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp); } // std Loading Loading @@ -2321,7 +2321,7 @@ unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __res // reverse template <class _BidirectionalIterator> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 void __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, bidirectional_iterator_tag) { Loading @@ -2335,7 +2335,7 @@ __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, bidirec } template <class _RandomAccessIterator> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 void __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, random_access_iterator_tag) { Loading @@ -2345,7 +2345,7 @@ __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, random_ac } template <class _BidirectionalIterator> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 void reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) { Loading Loading @@ -3393,7 +3393,7 @@ is_partitioned(_InputIterator __first, _InputIterator __last, _Predicate __pred) // partition template <class _Predicate, class _ForwardIterator> _ForwardIterator _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator __partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, forward_iterator_tag) { while (true) Loading @@ -3416,7 +3416,7 @@ __partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred } template <class _Predicate, class _BidirectionalIterator> _BidirectionalIterator _LIBCPP_CONSTEXPR_AFTER_CXX17 _BidirectionalIterator __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, bidirectional_iterator_tag) { Loading @@ -3441,7 +3441,7 @@ __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Pred } template <class _ForwardIterator, class _Predicate> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIterator partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { Loading Loading @@ -5760,7 +5760,7 @@ lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, // next_permutation template <class _Compare, class _BidirectionalIterator> bool _LIBCPP_CONSTEXPR_AFTER_CXX17 bool __next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { _BidirectionalIterator __i = __last; Loading @@ -5787,7 +5787,7 @@ __next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last } template <class _BidirectionalIterator, class _Compare> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { Loading @@ -5796,7 +5796,7 @@ next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, } template <class _BidirectionalIterator> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) { Loading @@ -5807,7 +5807,7 @@ next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) // prev_permutation template <class _Compare, class _BidirectionalIterator> bool _LIBCPP_CONSTEXPR_AFTER_CXX17 bool __prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { _BidirectionalIterator __i = __last; Loading @@ -5834,7 +5834,7 @@ __prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last } template <class _BidirectionalIterator, class _Compare> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { Loading @@ -5843,7 +5843,7 @@ prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, } template <class _BidirectionalIterator> inline _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17 bool prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) { Loading
libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition.pass.cpp +12 −4 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ // template<BidirectionalIterator Iter, Predicate<auto, Iter::value_type> Pred> // requires ShuffleIterator<Iter> // && CopyConstructible<Pred> // Iter // constexpr Iter // constexpr in C++20 // partition(Iter first, Iter last, Pred pred); #include <algorithm> Loading @@ -23,11 +23,11 @@ struct is_odd { bool operator()(const int& i) const {return i & 1;} TEST_CONSTEXPR bool operator()(const int& i) const {return i & 1;} }; template <class Iter> void TEST_CONSTEXPR_CXX20 bool test() { // check mixed Loading Loading @@ -92,6 +92,8 @@ test() assert(is_odd()(*i)); for (int* i = base(r); i < ia+sa; ++i) assert(!is_odd()(*i)); return true; } int main(int, char**) Loading @@ -100,5 +102,11 @@ int main(int, char**) test<random_access_iterator<int*> >(); test<int*>(); #if TEST_STD_VER >= 20 static_assert(test<bidirectional_iterator<int*>>()); static_assert(test<random_access_iterator<int*>>()); static_assert(test<int*>()); #endif return 0; }
libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse.pass.cpp +11 −3 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ // template<BidirectionalIterator Iter> // requires HasSwap<Iter::reference, Iter::reference> // void // constexpr void // constexpr in C++20 // reverse(Iter first, Iter last); #include <algorithm> Loading @@ -20,7 +20,7 @@ #include "test_iterators.h" template <class Iter> void TEST_CONSTEXPR_CXX20 bool test() { int ia[] = {0}; Loading Loading @@ -50,6 +50,8 @@ test() assert(id[1] == 2); assert(id[2] == 1); assert(id[3] == 0); return true; } int main(int, char**) Loading @@ -58,5 +60,11 @@ int main(int, char**) test<random_access_iterator<int*> >(); test<int*>(); #if TEST_STD_VER >= 20 static_assert(test<bidirectional_iterator<int*>>()); static_assert(test<random_access_iterator<int*>>()); static_assert(test<int*>()); #endif return 0; }
libcxx/test/std/algorithms/alg.sorting/alg.permutation.generators/next_permutation.pass.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ // template<BidirectionalIterator Iter> // requires ShuffleIterator<Iter> // && LessThanComparable<Iter::value_type> // bool // constexpr bool // constexpr in C++20 // next_permutation(Iter first, Iter last); #include <algorithm> Loading @@ -22,7 +22,7 @@ #include <cstdio> int factorial(int x) TEST_CONSTEXPR_CXX14 int factorial(int x) { int r = 1; for (; x; --x) Loading @@ -31,7 +31,7 @@ int factorial(int x) } template <class Iter> void TEST_CONSTEXPR_CXX20 bool test() { int ia[] = {1, 2, 3, 4, 5, 6}; Loading @@ -56,6 +56,7 @@ test() } while (x); assert(count == factorial(e)); } return true; } int main(int, char**) Loading @@ -64,5 +65,11 @@ int main(int, char**) test<random_access_iterator<int*> >(); test<int*>(); #if TEST_STD_VER >= 20 static_assert(test<bidirectional_iterator<int*>>()); static_assert(test<random_access_iterator<int*>>()); static_assert(test<int*>()); #endif return 0; }
libcxx/test/std/algorithms/alg.sorting/alg.permutation.generators/next_permutation_comp.pass.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ // template<BidirectionalIterator Iter, StrictWeakOrder<auto, Iter::value_type> Compare> // requires ShuffleIterator<Iter> // && CopyConstructible<Compare> // bool // constexpr bool // constexpr in C++20 // next_permutation(Iter first, Iter last, Compare comp); #include <algorithm> Loading @@ -23,7 +23,7 @@ #include <cstdio> int factorial(int x) TEST_CONSTEXPR_CXX14 int factorial(int x) { int r = 1; for (; x; --x) Loading @@ -32,7 +32,7 @@ int factorial(int x) } template <class Iter> void TEST_CONSTEXPR_CXX20 bool test() { typedef std::greater<int> C; Loading @@ -58,6 +58,7 @@ test() } while (x); assert(count == factorial(e)); } return true; } int main(int, char**) Loading @@ -66,5 +67,11 @@ int main(int, char**) test<random_access_iterator<int*> >(); test<int*>(); #if TEST_STD_VER >= 20 static_assert(test<bidirectional_iterator<int*>>()); static_assert(test<random_access_iterator<int*>>()); static_assert(test<int*>()); #endif return 0; }