Skip to content

Commit 00d4c40

Browse files
committed
Update other comparison tests
1 parent 18ded9b commit 00d4c40

File tree

7 files changed

+55
-8
lines changed

7 files changed

+55
-8
lines changed

libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort.copy/ranges_partial_sort_copy.pass.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,12 @@ static_assert(!HasPartialSortCopyIter<int*, int*, int*, int*, IndirectUnaryPredi
7575
static_assert(!HasPartialSortCopyIter<int*, int*, int*, int*, IndirectUnaryPredicateNotCopyConstructible>);
7676

7777
// !indirectly_copyable<I1, I2>
78-
static_assert(!HasPartialSortCopyIter<int*, int*, MoveOnly*>);
78+
struct OrderedConvertibleToInt {
79+
friend auto operator<=>(OrderedConvertibleToInt const&, OrderedConvertibleToInt const&) = default;
80+
operator int() const;
81+
};
82+
83+
static_assert(!HasPartialSortCopyIter<int*, int*, OrderedConvertibleToInt*, OrderedConvertibleToInt*>);
7984

8085
// !sortable<I2, Comp, Proj2>
8186
static_assert(!HasPartialSortCopyIter<int*, int*, const int*, const int*>);
@@ -84,6 +89,12 @@ struct NoComparator {};
8489
// !indirect_strict_weak_order<Comp, projected<I1, Proj1>, projected<I2, Proj2>>
8590
static_assert(!HasPartialSortCopyIter<NoComparator*, NoComparator*, NoComparator*, NoComparator*>);
8691

92+
#if TEST_STD_VER >= 23
93+
static_assert(HasPartialSortCopyIter<int*, int*, MoveOnly*, MoveOnly*>);
94+
#else
95+
static_assert(!HasPartialSortCopyIter<int*, int*, MoveOnly*, MoveOnly*>);
96+
#endif // TEST_STD_VER >= 23
97+
8798
// Test constraints of the (range) overload.
8899
// ======================================================
89100

@@ -109,14 +120,20 @@ static_assert(!HasPartialSortCopyRange<R<int*>, RandomAccessRangeNotDerivedFrom>
109120
static_assert(!HasPartialSortCopyRange<R<int*>, RandomAccessRangeBadIndex>);
110121

111122
// !indirectly_copyable<iterator_t<R1>, iterator_t<R2>>
112-
static_assert(!HasPartialSortCopyRange<R<int*>, R<MoveOnly*>>);
123+
static_assert(!HasPartialSortCopyRange<R<int*>, R<OrderedConvertibleToInt*>>);
113124

114125
// !sortable<iterator_t<R2>, Comp, Proj2>
115126
static_assert(!HasPartialSortCopyRange<R<int*>, R<const int*>>);
116127

117128
// !indirect_strict_weak_order<Comp, projected<iterator_t<R1>, Proj1>, projected<iterator_t<R2>, Proj2>>
118129
static_assert(!HasPartialSortCopyRange<R<NoComparator*>, R<NoComparator*>>);
119130

131+
#if TEST_STD_VER >= 23
132+
static_assert(HasPartialSortCopyRange<R<int*>, R<MoveOnly*>>);
133+
#else
134+
static_assert(!HasPartialSortCopyRange<R<int*>, R<MoveOnly*>>);
135+
#endif // TEST_STD_VER >= 23
136+
120137
static_assert(std::is_same_v<std::ranges::partial_sort_copy_result<int, int>, std::ranges::in_out_result<int, int>>);
121138

122139
template <class Iter, class Sent, class OutIter, class OutSent, std::size_t N>

libcxx/test/std/utilities/function.objects/range.cmp/equal_to.pass.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,14 @@ struct NotEqualityComparable {
2828
};
2929

3030
static_assert(!std::is_invocable_v<std::ranges::equal_to, NotEqualityComparable, NotEqualityComparable>);
31-
static_assert(!std::is_invocable_v<std::ranges::equal_to, int, MoveOnly>);
3231
static_assert(std::is_invocable_v<std::ranges::equal_to, explicit_operators, explicit_operators>);
3332

33+
#if TEST_STD_VER >= 23
34+
static_assert(std::is_invocable_v<std::ranges::equal_to, int, MoveOnly>);
35+
#else
36+
static_assert(!std::is_invocable_v<std::ranges::equal_to, int, MoveOnly>);
37+
#endif // TEST_STD_VER >= 23
38+
3439
static_assert(requires { typename std::ranges::equal_to::is_transparent; });
3540

3641
constexpr bool test() {

libcxx/test/std/utilities/function.objects/range.cmp/greater.pass.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,14 @@ struct NotTotallyOrdered {
2727
};
2828

2929
static_assert(!std::is_invocable_v<std::ranges::greater, NotTotallyOrdered, NotTotallyOrdered>);
30-
static_assert(!std::is_invocable_v<std::ranges::greater, int, MoveOnly>);
3130
static_assert(std::is_invocable_v<std::ranges::greater, explicit_operators, explicit_operators>);
3231

32+
#if TEST_STD_VER >= 23
33+
static_assert(std::is_invocable_v<std::ranges::greater, int, MoveOnly>);
34+
#else
35+
static_assert(!std::is_invocable_v<std::ranges::greater, int, MoveOnly>);
36+
#endif // TEST_STD_VER >= 23
37+
3338
static_assert(requires { typename std::ranges::greater::is_transparent; });
3439

3540
constexpr bool test() {

libcxx/test/std/utilities/function.objects/range.cmp/greater_equal.pass.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,14 @@ struct NotTotallyOrdered {
2727
};
2828

2929
static_assert(!std::is_invocable_v<std::ranges::greater_equal, NotTotallyOrdered, NotTotallyOrdered>);
30-
static_assert(!std::is_invocable_v<std::ranges::greater_equal, int, MoveOnly>);
3130
static_assert(std::is_invocable_v<std::ranges::greater_equal, explicit_operators, explicit_operators>);
3231

32+
#if TEST_STD_VER >= 23
33+
static_assert(std::is_invocable_v<std::ranges::greater_equal, int, MoveOnly>);
34+
#else
35+
static_assert(!std::is_invocable_v<std::ranges::greater_equal, int, MoveOnly>);
36+
#endif // TEST_STD_VER >= 23
37+
3338
static_assert(requires { typename std::ranges::greater_equal::is_transparent; });
3439

3540
constexpr bool test() {

libcxx/test/std/utilities/function.objects/range.cmp/less.pass.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,14 @@ struct NotTotallyOrdered {
2727
};
2828

2929
static_assert(!std::is_invocable_v<std::ranges::less, NotTotallyOrdered, NotTotallyOrdered>);
30-
static_assert(!std::is_invocable_v<std::ranges::less, int, MoveOnly>);
3130
static_assert(std::is_invocable_v<std::ranges::less, explicit_operators, explicit_operators>);
3231

32+
#if TEST_STD_VER >= 23
33+
static_assert(std::is_invocable_v<std::ranges::less, int, MoveOnly>);
34+
#else
35+
static_assert(!std::is_invocable_v<std::ranges::less, int, MoveOnly>);
36+
#endif // TEST_STD_VER >= 23
37+
3338
static_assert(requires { typename std::ranges::less::is_transparent; });
3439

3540
constexpr bool test() {

libcxx/test/std/utilities/function.objects/range.cmp/less_equal.pass.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,14 @@ struct NotTotallyOrdered {
2727
};
2828

2929
static_assert(!std::is_invocable_v<std::ranges::less_equal, NotTotallyOrdered, NotTotallyOrdered>);
30-
static_assert(!std::is_invocable_v<std::ranges::less_equal, int, MoveOnly>);
3130
static_assert(std::is_invocable_v<std::ranges::less_equal, explicit_operators, explicit_operators>);
3231

32+
#if TEST_STD_VER >= 23
33+
static_assert(std::is_invocable_v<std::ranges::less_equal, int, MoveOnly>);
34+
#else
35+
static_assert(!std::is_invocable_v<std::ranges::less_equal, int, MoveOnly>);
36+
#endif // TEST_STD_VER >= 23
37+
3338
static_assert(requires { typename std::ranges::less_equal::is_transparent; });
3439

3540
constexpr bool test() {

libcxx/test/std/utilities/function.objects/range.cmp/not_equal_to.pass.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,14 @@ struct NotEqualityComparable {
2828
};
2929

3030
static_assert(!std::is_invocable_v<std::ranges::equal_to, NotEqualityComparable, NotEqualityComparable>);
31-
static_assert(!std::is_invocable_v<std::ranges::equal_to, int, MoveOnly>);
3231
static_assert(std::is_invocable_v<std::ranges::equal_to, explicit_operators, explicit_operators>);
3332

33+
#if TEST_STD_VER >= 23
34+
static_assert(std::is_invocable_v<std::ranges::equal_to, int, MoveOnly>);
35+
#else
36+
static_assert(!std::is_invocable_v<std::ranges::equal_to, int, MoveOnly>);
37+
#endif // TEST_STD_VER >= 23
38+
3439
static_assert(requires { typename std::ranges::not_equal_to::is_transparent; });
3540

3641
struct PtrAndNotEqOperator {

0 commit comments

Comments
 (0)