From 88b73a980ff28fc7123df1e857b5c4dda4a62a5a Mon Sep 17 00:00:00 2001 From: Louis Dionne <ldionne.2@gmail.com> Date: Mon, 12 Jul 2021 12:31:51 -0400 Subject: [PATCH] [libc++] Remove random [[nodiscard]] in the test suite --- ...ence_relation.subsumption.compile.pass.cpp | 12 ++--- .../equivalence_relation.subsumption.pass.cpp | 10 ++-- .../invocable.compile.pass.cpp | 4 +- .../predicate.compile.pass.cpp | 4 +- .../concept.predicate/predicate.pass.cpp | 4 +- .../predicate.subsumption.compile.pass.cpp | 4 +- .../predicate.subsumption.pass.cpp | 4 +- .../regular_invocable.compile.pass.cpp | 4 +- .../relation.subsumption.compile.pass.cpp | 8 +-- .../relation.subsumption.pass.cpp | 4 +- ...ct_weak_order.subsumption.compile.pass.cpp | 12 ++--- .../strict_weak_order.subsumption.pass.cpp | 4 +- .../swappable_with.compile.pass.cpp | 2 +- .../concepts.arithmetic/arithmetic.h | 6 +-- .../concepts.object/regular.compile.pass.cpp | 2 +- .../readable.traits/iter_value_t.pass.cpp | 6 +-- .../subsumption.compile.pass.cpp | 4 +- .../subsumption.compile.pass.cpp | 4 +- .../subsumption.compile.pass.cpp | 4 +- .../subsumption.compile.pass.cpp | 4 +- .../indirectly_readable.compile.pass.cpp | 2 +- .../sentinel_for.subsumption.compile.pass.cpp | 4 +- .../indirectly_writable.compile.pass.cpp | 2 +- .../iterator.cust.move/iter_move.pass.cpp | 6 +-- .../unqualified_lookup_wrapper.h | 6 +-- .../subsumption.compile.pass.cpp | 12 ++--- libcxx/test/support/compare_types.h | 52 +++++++++---------- libcxx/test/support/test_iterators.h | 4 +- 28 files changed, 97 insertions(+), 97 deletions(-) diff --git a/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.compile.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.compile.pass.cpp index 7619c8ce2217..1f0b7395c91b 100644 --- a/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.compile.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.compile.pass.cpp @@ -27,13 +27,13 @@ struct R { // clang-format off template<class F, class T, class U> requires std::relation<F, T, U> -[[nodiscard]] constexpr bool check_equivalence_relation_subsumes_relation() { +constexpr bool check_equivalence_relation_subsumes_relation() { return false; } template<class F, class T, class U> requires std::equivalence_relation<F, T, U> && true -[[nodiscard]] constexpr bool check_equivalence_relation_subsumes_relation() { +constexpr bool check_equivalence_relation_subsumes_relation() { return true; } // clang-format on @@ -48,13 +48,13 @@ static_assert(check_equivalence_relation_subsumes_relation<R, S1, S2>()); // clang-format off template<class F, class T, class U> requires std::relation<F, T, U> && true -[[nodiscard]] constexpr bool check_relation_subsumes_equivalence_relation() { +constexpr bool check_relation_subsumes_equivalence_relation() { return true; } template<class F, class T, class U> requires std::equivalence_relation<F, T, U> -[[nodiscard]] constexpr bool check_relation_subsumes_equivalence_relation() { +constexpr bool check_relation_subsumes_equivalence_relation() { return false; } // clang-format on @@ -69,13 +69,13 @@ static_assert(check_relation_subsumes_equivalence_relation<R, S1, S2>()); // clang-format off template<class F, class T, class U> requires std::equivalence_relation<F, T, T> && std::equivalence_relation<F, U, U> -[[nodiscard]] constexpr bool check_equivalence_relation_subsumes_itself() { +constexpr bool check_equivalence_relation_subsumes_itself() { return false; } template<class F, class T, class U> requires std::equivalence_relation<F, T, U> -[[nodiscard]] constexpr bool check_equivalence_relation_subsumes_itself() { +constexpr bool check_equivalence_relation_subsumes_itself() { return true; } // clang-format on diff --git a/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.pass.cpp index 0aad734fa654..ffec212ebc60 100644 --- a/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.equiv/equivalence_relation.subsumption.pass.cpp @@ -17,15 +17,15 @@ // clang-format off template<class F, class T, class U> requires std::relation<F, T, U> -[[nodiscard]] constexpr bool check_subsumption() { return false; } +constexpr bool check_subsumption() { return false; } template<class F, class T> requires std::equivalence_relation<F, T, T> && true -[[nodiscard]] constexpr bool check_subsumption() { return false; } +constexpr bool check_subsumption() { return false; } template<class F, class T, class U> requires std::equivalence_relation<F, T, U> && true -[[nodiscard]] constexpr bool check_subsumption() { return true; } +constexpr bool check_subsumption() { return true; } // clang-format on static_assert(check_subsumption<int (*)(int, int), int, int>()); @@ -46,11 +46,11 @@ static_assert(check_subsumption<R, S1, S2>()); // clang-format off template<class F, class T, class U> requires std::relation<F, T, U> && true -[[nodiscard]] constexpr bool check_reverse_subsumption() { return true; } +constexpr bool check_reverse_subsumption() { return true; } template<class F, class T, class U> requires std::equivalence_relation<F, T, U> -[[nodiscard]] constexpr bool check_no_subsumption() { return false; } +constexpr bool check_no_subsumption() { return false; } // clang-format on static_assert(check_reverse_subsumption<int (*)(int, int), int, int>()); diff --git a/libcxx/test/std/concepts/concepts.callable/concept.invocable/invocable.compile.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.invocable/invocable.compile.pass.cpp index ddded61520b9..dfd21a4f3133 100644 --- a/libcxx/test/std/concepts/concepts.callable/concept.invocable/invocable.compile.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.invocable/invocable.compile.pass.cpp @@ -19,7 +19,7 @@ #include <type_traits> template <class R, class... Args> -[[nodiscard]] constexpr bool check_invocable() { +constexpr bool check_invocable() { constexpr bool result = std::invocable<R(Args...), Args...>; static_assert(std::invocable<R(Args...) noexcept, Args...> == result); static_assert(std::invocable<R (*)(Args...), Args...> == result); @@ -239,7 +239,7 @@ static_assert(!std::invocable<multiple_overloads, multiple_overloads::O>); namespace pointer_to_member_functions { // clang-format off template<class Member, class T, class... Args> - [[nodiscard]] constexpr bool check_member_is_invocable() + constexpr bool check_member_is_invocable() { constexpr bool result = std::invocable<Member, T, Args...>; using uncv_t = std::remove_cvref_t<T>; diff --git a/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.compile.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.compile.pass.cpp index 5ad5985d8fa4..f2e86e214a35 100644 --- a/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.compile.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.compile.pass.cpp @@ -45,9 +45,9 @@ static_assert(std::predicate<Predicate&, int, double, char>); static_assert(!std::predicate<const Predicate, int, double, char>); static_assert(!std::predicate<const Predicate&, int, double, char>); -[[nodiscard]] constexpr bool check_lambda(auto) { return false; } +constexpr bool check_lambda(auto) { return false; } -[[nodiscard]] constexpr bool check_lambda(std::predicate auto) { return true; } +constexpr bool check_lambda(std::predicate auto) { return true; } static_assert(check_lambda([] { return std::true_type(); })); static_assert(check_lambda([]() -> int* { return nullptr; })); diff --git a/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.pass.cpp index 111f89cd1614..5c5941599f0b 100644 --- a/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.pass.cpp @@ -45,9 +45,9 @@ static_assert(std::predicate<Predicate&, int, double, char>); static_assert(!std::predicate<const Predicate, int, double, char>); static_assert(!std::predicate<const Predicate&, int, double, char>); -[[nodiscard]] constexpr bool check_lambda(auto) { return false; } +constexpr bool check_lambda(auto) { return false; } -[[nodiscard]] constexpr bool check_lambda(std::predicate auto) { return true; } +constexpr bool check_lambda(std::predicate auto) { return true; } static_assert(check_lambda([] { return std::true_type(); })); static_assert(check_lambda([]() -> int* { return nullptr; })); diff --git a/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.subsumption.compile.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.subsumption.compile.pass.cpp index 3ac652626edf..da133d58d6b5 100644 --- a/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.subsumption.compile.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.subsumption.compile.pass.cpp @@ -14,14 +14,14 @@ #include <concepts> -[[nodiscard]] constexpr bool check_subsumption(std::regular_invocable auto) { +constexpr bool check_subsumption(std::regular_invocable auto) { return false; } // clang-format off template<class F> requires std::predicate<F> && true -[[nodiscard]] constexpr bool check_subsumption(F) +constexpr bool check_subsumption(F) { return true; } diff --git a/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.subsumption.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.subsumption.pass.cpp index 86c79f008ad6..ca451ecd97e0 100644 --- a/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.subsumption.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.predicate/predicate.subsumption.pass.cpp @@ -14,14 +14,14 @@ #include <concepts> -[[nodiscard]] constexpr bool check_subsumption(std::regular_invocable auto) { +constexpr bool check_subsumption(std::regular_invocable auto) { return false; } // clang-format off template<class F> requires std::predicate<F> && true -[[nodiscard]] constexpr bool check_subsumption(F) +constexpr bool check_subsumption(F) { return true; } diff --git a/libcxx/test/std/concepts/concepts.callable/concept.regularinvocable/regular_invocable.compile.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.regularinvocable/regular_invocable.compile.pass.cpp index 7868def3cfe5..35973a793f4d 100644 --- a/libcxx/test/std/concepts/concepts.callable/concept.regularinvocable/regular_invocable.compile.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.regularinvocable/regular_invocable.compile.pass.cpp @@ -19,7 +19,7 @@ #include <type_traits> template <class R, class... Args> -[[nodiscard]] constexpr bool check_invocable() { +constexpr bool check_invocable() { constexpr bool result = std::regular_invocable<R(Args...), Args...>; static_assert(std::regular_invocable<R(Args...) noexcept, Args...> == result); static_assert(std::regular_invocable<R (*)(Args...), Args...> == result); @@ -265,7 +265,7 @@ static_assert(!std::regular_invocable<multiple_overloads, multiple_overloads::O> namespace pointer_to_member_functions { // clang-format off template<class Member, class T, class... Args> - [[nodiscard]] constexpr bool check_member_is_invocable() + constexpr bool check_member_is_invocable() { constexpr bool result = std::regular_invocable<Member, T, Args...>; using uncv_t = std::remove_cvref_t<T>; diff --git a/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.subsumption.compile.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.subsumption.compile.pass.cpp index f7a45f2b0751..4b64e262fd20 100644 --- a/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.subsumption.compile.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.subsumption.compile.pass.cpp @@ -28,13 +28,13 @@ struct R { template<class F, class T, class U> requires std::predicate<F, T, T> && std::predicate<F, T, U> && std::predicate<F, U, T> && std::predicate<F, U, U> -[[nodiscard]] constexpr bool check_relation_subsumes_predicate() { +constexpr bool check_relation_subsumes_predicate() { return false; } template<class F, class T, class U> requires std::relation<F, T, U> && true -[[nodiscard]] constexpr bool check_relation_subsumes_predicate() { +constexpr bool check_relation_subsumes_predicate() { return true; } // clang-format on @@ -49,13 +49,13 @@ static_assert(check_relation_subsumes_predicate<R, S1, S2>()); // clang-format off template<class F, class T, class U> requires std::relation<F, T, T> && std::relation<F, U, U> -[[nodiscard]] constexpr bool check_relation_subsumes_itself() { +constexpr bool check_relation_subsumes_itself() { return false; } template<class F, class T, class U> requires std::relation<F, T, U> -[[nodiscard]] constexpr bool check_relation_subsumes_itself() { +constexpr bool check_relation_subsumes_itself() { return true; } // clang-format on diff --git a/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.subsumption.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.subsumption.pass.cpp index 8568bd5f6ecf..3e2a20534f0e 100644 --- a/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.subsumption.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.relation/relation.subsumption.pass.cpp @@ -18,11 +18,11 @@ template<class F, class T, class U> requires std::predicate<F, T, T> && std::predicate<F, T, U> && std::predicate<F, U, T> && std::predicate<F, U, U> -[[nodiscard]] constexpr bool check_subsumption() { return false; } +constexpr bool check_subsumption() { return false; } template<class F, class T, class U> requires std::relation<F, T, U> && true -[[nodiscard]] constexpr bool check_subsumption() { return true; } +constexpr bool check_subsumption() { return true; } // clang-format on static_assert(check_subsumption<int (*)(int, double), int, double>()); diff --git a/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.compile.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.compile.pass.cpp index 34574f649a3f..969f25f16e16 100644 --- a/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.compile.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.compile.pass.cpp @@ -27,13 +27,13 @@ struct R { // clang-format off template<class F, class T, class U> requires std::relation<F, T, U> -[[nodiscard]] constexpr bool check_strict_weak_order_subsumes_relation() { +constexpr bool check_strict_weak_order_subsumes_relation() { return false; } template<class F, class T, class U> requires std::strict_weak_order<F, T, U> && true -[[nodiscard]] constexpr bool check_strict_weak_order_subsumes_relation() { +constexpr bool check_strict_weak_order_subsumes_relation() { return true; } // clang-format on @@ -48,13 +48,13 @@ static_assert(check_strict_weak_order_subsumes_relation<R, S1, S2>()); // clang-format off template<class F, class T, class U> requires std::relation<F, T, U> && true -[[nodiscard]] constexpr bool check_relation_subsumes_strict_weak_order() { +constexpr bool check_relation_subsumes_strict_weak_order() { return true; } template<class F, class T, class U> requires std::strict_weak_order<F, T, U> -[[nodiscard]] constexpr bool check_relation_subsumes_strict_weak_order() { +constexpr bool check_relation_subsumes_strict_weak_order() { return false; } // clang-format on @@ -69,13 +69,13 @@ static_assert(check_relation_subsumes_strict_weak_order<R, S1, S2>()); // clang-format off template<class F, class T, class U> requires std::strict_weak_order<F, T, T> && std::strict_weak_order<F, U, U> -[[nodiscard]] constexpr bool check_strict_weak_order_subsumes_itself() { +constexpr bool check_strict_weak_order_subsumes_itself() { return false; } template<class F, class T, class U> requires std::strict_weak_order<F, T, U> -[[nodiscard]] constexpr bool check_strict_weak_order_subsumes_itself() { +constexpr bool check_strict_weak_order_subsumes_itself() { return true; } // clang-format on diff --git a/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.pass.cpp index 52a19f4f2d8d..93b1de725587 100644 --- a/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.strictweakorder/strict_weak_order.subsumption.pass.cpp @@ -17,11 +17,11 @@ // clang-format off template<class F, class T, class U> requires std::relation<F, T, U> -[[nodiscard]] constexpr bool check_subsumption() { return false; } +constexpr bool check_subsumption() { return false; } template<class F, class T, class U> requires std::strict_weak_order<F, T, U> && true -[[nodiscard]] constexpr bool check_subsumption() { return true; } +constexpr bool check_subsumption() { return true; } // clang-format on static_assert(check_subsumption<int (*)(int, double), int, double>()); diff --git a/libcxx/test/std/concepts/concepts.lang/concept.swappable/swappable_with.compile.pass.cpp b/libcxx/test/std/concepts/concepts.lang/concept.swappable/swappable_with.compile.pass.cpp index e0772b51d818..711072936fec 100644 --- a/libcxx/test/std/concepts/concepts.lang/concept.swappable/swappable_with.compile.pass.cpp +++ b/libcxx/test/std/concepts/concepts.lang/concept.swappable/swappable_with.compile.pass.cpp @@ -671,7 +671,7 @@ struct Proxy { constexpr Proxy proxy(A& a) { return Proxy{a}; } } // namespace N -[[nodiscard]] constexpr bool CheckRegression() { +constexpr bool CheckRegression() { int i = 1, j = 2; lv_swap(i, j); assert(i == 2 && j == 1); diff --git a/libcxx/test/std/concepts/concepts.lang/concepts.arithmetic/arithmetic.h b/libcxx/test/std/concepts/concepts.lang/concepts.arithmetic/arithmetic.h index bb7016508cca..b2baabf0abea 100644 --- a/libcxx/test/std/concepts/concepts.lang/concepts.arithmetic/arithmetic.h +++ b/libcxx/test/std/concepts/concepts.lang/concepts.arithmetic/arithmetic.h @@ -12,20 +12,20 @@ // This overload should never be called. It exists solely to force subsumption. template <std::integral I> -[[nodiscard]] constexpr bool CheckSubsumption(I) { +constexpr bool CheckSubsumption(I) { return false; } // clang-format off template <std::integral I> requires std::signed_integral<I> && (!std::unsigned_integral<I>) -[[nodiscard]] constexpr bool CheckSubsumption(I) { +constexpr bool CheckSubsumption(I) { return std::is_signed_v<I>; } template <std::integral I> requires std::unsigned_integral<I> && (!std::signed_integral<I>) -[[nodiscard]] constexpr bool CheckSubsumption(I) { +constexpr bool CheckSubsumption(I) { return std::is_unsigned_v<I>; } // clang-format on diff --git a/libcxx/test/std/concepts/concepts.object/regular.compile.pass.cpp b/libcxx/test/std/concepts/concepts.object/regular.compile.pass.cpp index a70e265984eb..e3d17f3dc41f 100644 --- a/libcxx/test/std/concepts/concepts.object/regular.compile.pass.cpp +++ b/libcxx/test/std/concepts/concepts.object/regular.compile.pass.cpp @@ -161,7 +161,7 @@ static_assert(!std::regular<const_copy_assignment const>); static_assert(!std::regular<cv_copy_assignment const volatile>); struct is_equality_comparable { - [[nodiscard]] bool operator==(is_equality_comparable const&) const = default; + bool operator==(is_equality_comparable const&) const = default; }; static_assert(std::regular<is_equality_comparable>); diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.assoc.types/readable.traits/iter_value_t.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.assoc.types/readable.traits/iter_value_t.pass.cpp index dc18146a13b8..0d4597259eec 100644 --- a/libcxx/test/std/iterators/iterator.requirements/iterator.assoc.types/readable.traits/iter_value_t.pass.cpp +++ b/libcxx/test/std/iterators/iterator.requirements/iterator.assoc.types/readable.traits/iter_value_t.pass.cpp @@ -20,7 +20,7 @@ #include <vector> template <class T, class Expected> -[[nodiscard]] constexpr bool check_iter_value_t() { +constexpr bool check_iter_value_t() { constexpr bool result = std::same_as<std::iter_value_t<T>, Expected>; static_assert(std::same_as<std::iter_value_t<T const>, Expected> == result); static_assert(std::same_as<std::iter_value_t<T volatile>, Expected> == result); @@ -50,13 +50,13 @@ static_assert(check_iter_value_t<both_members, double>()); // clang-format off template <class T> requires requires { typename std::iter_value_t<T>; } -[[nodiscard]] constexpr bool check_no_iter_value_t() { +constexpr bool check_no_iter_value_t() { return false; } // clang-format on template <class T> -[[nodiscard]] constexpr bool check_no_iter_value_t() { +constexpr bool check_no_iter_value_t() { return true; } diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.forward/subsumption.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.forward/subsumption.compile.pass.cpp index f1b7f304e40d..2fd10c5d0801 100644 --- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.forward/subsumption.compile.pass.cpp +++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.forward/subsumption.compile.pass.cpp @@ -18,12 +18,12 @@ // clang-format off template<std::input_iterator> -[[nodiscard]] constexpr bool check_subsumption() { +constexpr bool check_subsumption() { return false; } template<std::forward_iterator> -[[nodiscard]] constexpr bool check_subsumption() { +constexpr bool check_subsumption() { return true; } // clang-format on diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.inc/subsumption.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.inc/subsumption.compile.pass.cpp index 985a068cef81..c4280633e767 100644 --- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.inc/subsumption.compile.pass.cpp +++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.inc/subsumption.compile.pass.cpp @@ -20,12 +20,12 @@ // clang-format off template<std::weakly_incrementable I> requires std::regular<I> -[[nodiscard]] constexpr bool check_subsumption() { +constexpr bool check_subsumption() { return false; } template<std::incrementable> -[[nodiscard]] constexpr bool check_subsumption() { +constexpr bool check_subsumption() { return true; } // clang-format on diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.input/subsumption.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.input/subsumption.compile.pass.cpp index 608a7d006e54..92aa5c887d8d 100644 --- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.input/subsumption.compile.pass.cpp +++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.input/subsumption.compile.pass.cpp @@ -20,12 +20,12 @@ // clang-format off template<std::input_or_output_iterator I> requires std::indirectly_readable<I> -[[nodiscard]] constexpr bool check_subsumption() { +constexpr bool check_subsumption() { return false; } template<std::input_iterator> -[[nodiscard]] constexpr bool check_subsumption() { +constexpr bool check_subsumption() { return true; } // clang-format on diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.iterator/subsumption.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.iterator/subsumption.compile.pass.cpp index c138fc58b641..2a2196745c3a 100644 --- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.iterator/subsumption.compile.pass.cpp +++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.iterator/subsumption.compile.pass.cpp @@ -17,12 +17,12 @@ // clang-format off template<std::weakly_incrementable> -[[nodiscard]] constexpr bool check_subsumption() { +constexpr bool check_subsumption() { return false; } template<std::input_or_output_iterator> -[[nodiscard]] constexpr bool check_subsumption() { +constexpr bool check_subsumption() { return true; } // clang-format on diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.readable/indirectly_readable.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.readable/indirectly_readable.compile.pass.cpp index 1734c26878e7..50c18e49a663 100644 --- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.readable/indirectly_readable.compile.pass.cpp +++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.readable/indirectly_readable.compile.pass.cpp @@ -20,7 +20,7 @@ #include "read_write.h" template <class In> -[[nodiscard]] constexpr bool check_indirectly_readable() { +constexpr bool check_indirectly_readable() { constexpr bool result = std::indirectly_readable<In>; static_assert(std::indirectly_readable<In const> == result); static_assert(std::indirectly_readable<In volatile> == result); diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.sentinel/sentinel_for.subsumption.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.sentinel/sentinel_for.subsumption.compile.pass.cpp index bb95595453bc..32d7b563b14e 100644 --- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.sentinel/sentinel_for.subsumption.compile.pass.cpp +++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.sentinel/sentinel_for.subsumption.compile.pass.cpp @@ -20,12 +20,12 @@ // clang-format off template<std::input_or_output_iterator, std::semiregular> -[[nodiscard]] constexpr bool check_sentinel_subsumption() { +constexpr bool check_sentinel_subsumption() { return false; } template<class I, std::sentinel_for<I> > -[[nodiscard]] constexpr bool check_subsumption() { +constexpr bool check_subsumption() { return true; } // clang-format on diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.writable/indirectly_writable.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.writable/indirectly_writable.compile.pass.cpp index 8f46ae06878d..71b1bd274c5b 100644 --- a/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.writable/indirectly_writable.compile.pass.cpp +++ b/libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.writable/indirectly_writable.compile.pass.cpp @@ -22,7 +22,7 @@ #include "read_write.h" template <class Out, class T> -[[nodiscard]] constexpr bool check_indirectly_writable() { +constexpr bool check_indirectly_writable() { constexpr bool result = std::indirectly_writable<Out, T>; static_assert(std::indirectly_writable<Out const, T> == result); return result; diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.cust/iterator.cust.move/iter_move.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/iterator.cust/iterator.cust.move/iter_move.pass.cpp index cf80bdeb205b..a4c2bfb43173 100644 --- a/libcxx/test/std/iterators/iterator.requirements/iterator.cust/iterator.cust.move/iter_move.pass.cpp +++ b/libcxx/test/std/iterators/iterator.requirements/iterator.cust/iterator.cust.move/iter_move.pass.cpp @@ -32,10 +32,10 @@ public: constexpr explicit iterator_wrapper(I i) noexcept : base_(std::move(i)) {} // `noexcept(false)` is used to check that this operator is called. - [[nodiscard]] constexpr decltype(auto) operator*() const& noexcept(false) { return *base_; } + constexpr decltype(auto) operator*() const& noexcept(false) { return *base_; } // `noexcept` is used to check that this operator is called. - [[nodiscard]] constexpr auto&& operator*() && noexcept { return std::move(*base_); } + constexpr auto&& operator*() && noexcept { return std::move(*base_); } constexpr iterator_wrapper& operator++() noexcept { ++base_; @@ -44,7 +44,7 @@ public: constexpr void operator++(int) noexcept { ++base_; } - [[nodiscard]] constexpr bool operator==(iterator_wrapper const& other) const noexcept { return base_ == other.base_; } + constexpr bool operator==(iterator_wrapper const& other) const noexcept { return base_ == other.base_; } private: I base_ = I{}; diff --git a/libcxx/test/std/iterators/iterator.requirements/iterator.cust/unqualified_lookup_wrapper.h b/libcxx/test/std/iterators/iterator.requirements/iterator.cust/unqualified_lookup_wrapper.h index 51f35c3234ec..7c3719aa519e 100644 --- a/libcxx/test/std/iterators/iterator.requirements/iterator.cust/unqualified_lookup_wrapper.h +++ b/libcxx/test/std/iterators/iterator.requirements/iterator.cust/unqualified_lookup_wrapper.h @@ -20,7 +20,7 @@ public: constexpr explicit unqualified_lookup_wrapper(I i) noexcept : base_(std::move(i)) {} - [[nodiscard]] constexpr decltype(auto) operator*() const noexcept { return *base_; } + constexpr decltype(auto) operator*() const noexcept { return *base_; } constexpr unqualified_lookup_wrapper& operator++() noexcept { ++base_; @@ -29,13 +29,13 @@ public: constexpr void operator++(int) noexcept { ++base_; } - [[nodiscard]] constexpr bool operator==(unqualified_lookup_wrapper const& other) const noexcept { + constexpr bool operator==(unqualified_lookup_wrapper const& other) const noexcept { return base_ == other.base_; } // Delegates `std::ranges::iter_move` for the underlying iterator. `noexcept(false)` will be used // to ensure that the unqualified-lookup overload is chosen. - [[nodiscard]] friend constexpr decltype(auto) iter_move(unqualified_lookup_wrapper& i) noexcept(false) { + friend constexpr decltype(auto) iter_move(unqualified_lookup_wrapper& i) noexcept(false) { return std::ranges::iter_move(i.base_); } diff --git a/libcxx/test/std/ranges/range.req/range.refinements/subsumption.compile.pass.cpp b/libcxx/test/std/ranges/range.req/range.refinements/subsumption.compile.pass.cpp index 0d0b9de44c68..d2f3f3987daf 100644 --- a/libcxx/test/std/ranges/range.req/range.refinements/subsumption.compile.pass.cpp +++ b/libcxx/test/std/ranges/range.req/range.refinements/subsumption.compile.pass.cpp @@ -26,13 +26,13 @@ struct range { template<std::ranges::range R> requires std::input_iterator<std::ranges::iterator_t<R>> -[[nodiscard]] constexpr bool check_input_range_subsumption() { +constexpr bool check_input_range_subsumption() { return false; } template<std::ranges::input_range> requires true -[[nodiscard]] constexpr bool check_input_range_subsumption() { +constexpr bool check_input_range_subsumption() { return true; } @@ -40,13 +40,13 @@ static_assert(check_input_range_subsumption<range>()); template<std::ranges::input_range R> requires std::forward_iterator<std::ranges::iterator_t<R>> -[[nodiscard]] constexpr bool check_forward_range_subsumption() { +constexpr bool check_forward_range_subsumption() { return false; } template<std::ranges::forward_range> requires true -[[nodiscard]] constexpr bool check_forward_range_subsumption() { +constexpr bool check_forward_range_subsumption() { return true; } @@ -54,13 +54,13 @@ static_assert(check_forward_range_subsumption<range>()); template<std::ranges::forward_range R> requires std::bidirectional_iterator<std::ranges::iterator_t<R>> -[[nodiscard]] constexpr bool check_bidirectional_range_subsumption() { +constexpr bool check_bidirectional_range_subsumption() { return false; } template<std::ranges::bidirectional_range> requires true -[[nodiscard]] constexpr bool check_bidirectional_range_subsumption() { +constexpr bool check_bidirectional_range_subsumption() { return true; } diff --git a/libcxx/test/support/compare_types.h b/libcxx/test/support/compare_types.h index 1d448da5407e..581adb4f8694 100644 --- a/libcxx/test/support/compare_types.h +++ b/libcxx/test/support/compare_types.h @@ -261,62 +261,62 @@ struct totally_ordered_with_others { }; struct no_lt_not_totally_ordered_with { - [[nodiscard]] bool operator==(no_lt_not_totally_ordered_with const&) const = default; - [[nodiscard]] auto operator<=>(no_lt_not_totally_ordered_with const&) const = default; + bool operator==(no_lt_not_totally_ordered_with const&) const = default; + auto operator<=>(no_lt_not_totally_ordered_with const&) const = default; operator totally_ordered_with_others() const noexcept; - [[nodiscard]] bool operator==(totally_ordered_with_others const&) const; - [[nodiscard]] auto operator<=>(totally_ordered_with_others const&) const; - [[nodiscard]] auto operator<(totally_ordered_with_others const&) const; + bool operator==(totally_ordered_with_others const&) const; + auto operator<=>(totally_ordered_with_others const&) const; + auto operator<(totally_ordered_with_others const&) const; }; struct no_gt_not_totally_ordered_with { - [[nodiscard]] bool operator==(no_gt_not_totally_ordered_with const&) const = default; - [[nodiscard]] auto operator<=>(no_gt_not_totally_ordered_with const&) const = default; + bool operator==(no_gt_not_totally_ordered_with const&) const = default; + auto operator<=>(no_gt_not_totally_ordered_with const&) const = default; operator totally_ordered_with_others() const noexcept; - [[nodiscard]] bool operator==(totally_ordered_with_others const&) const; - [[nodiscard]] auto operator<=>(totally_ordered_with_others const&) const; - [[nodiscard]] auto operator>(totally_ordered_with_others const&) const; + bool operator==(totally_ordered_with_others const&) const; + auto operator<=>(totally_ordered_with_others const&) const; + auto operator>(totally_ordered_with_others const&) const; }; struct no_le_not_totally_ordered_with { - [[nodiscard]] bool operator==(no_le_not_totally_ordered_with const&) const = default; - [[nodiscard]] auto operator<=>(no_le_not_totally_ordered_with const&) const = default; + bool operator==(no_le_not_totally_ordered_with const&) const = default; + auto operator<=>(no_le_not_totally_ordered_with const&) const = default; operator totally_ordered_with_others() const noexcept; - [[nodiscard]] bool operator==(totally_ordered_with_others const&) const; - [[nodiscard]] auto operator<=>(totally_ordered_with_others const&) const; - [[nodiscard]] auto operator<=(totally_ordered_with_others const&) const; + bool operator==(totally_ordered_with_others const&) const; + auto operator<=>(totally_ordered_with_others const&) const; + auto operator<=(totally_ordered_with_others const&) const; }; struct no_ge_not_totally_ordered_with { - [[nodiscard]] bool operator==(no_ge_not_totally_ordered_with const&) const = default; - [[nodiscard]] auto operator<=>(no_ge_not_totally_ordered_with const&) const = default; + bool operator==(no_ge_not_totally_ordered_with const&) const = default; + auto operator<=>(no_ge_not_totally_ordered_with const&) const = default; operator totally_ordered_with_others() const noexcept; - [[nodiscard]] bool operator==(totally_ordered_with_others const&) const; - [[nodiscard]] auto operator<=>(totally_ordered_with_others const&) const; - [[nodiscard]] auto operator>=(totally_ordered_with_others const&) const; + bool operator==(totally_ordered_with_others const&) const; + auto operator<=>(totally_ordered_with_others const&) const; + auto operator>=(totally_ordered_with_others const&) const; }; struct partial_ordering_totally_ordered_with { - [[nodiscard]] auto operator<=>(partial_ordering_totally_ordered_with const&) const noexcept = default; - [[nodiscard]] std::partial_ordering operator<=>(totally_ordered_with_others const&) const noexcept; + auto operator<=>(partial_ordering_totally_ordered_with const&) const noexcept = default; + std::partial_ordering operator<=>(totally_ordered_with_others const&) const noexcept; operator totally_ordered_with_others() const; }; struct weak_ordering_totally_ordered_with { - [[nodiscard]] auto operator<=>(weak_ordering_totally_ordered_with const&) const noexcept = default; - [[nodiscard]] std::weak_ordering operator<=>(totally_ordered_with_others const&) const noexcept; + auto operator<=>(weak_ordering_totally_ordered_with const&) const noexcept = default; + std::weak_ordering operator<=>(totally_ordered_with_others const&) const noexcept; operator totally_ordered_with_others() const; }; struct strong_ordering_totally_ordered_with { - [[nodiscard]] auto operator<=>(strong_ordering_totally_ordered_with const&) const noexcept = default; - [[nodiscard]] std::strong_ordering operator<=>(totally_ordered_with_others const&) const noexcept; + auto operator<=>(strong_ordering_totally_ordered_with const&) const noexcept = default; + std::strong_ordering operator<=>(totally_ordered_with_others const&) const noexcept; operator totally_ordered_with_others() const; }; diff --git a/libcxx/test/support/test_iterators.h b/libcxx/test/support/test_iterators.h index 2ce548279ada..bb1671b90935 100644 --- a/libcxx/test/support/test_iterators.h +++ b/libcxx/test/support/test_iterators.h @@ -730,9 +730,9 @@ public: constexpr explicit stride_counting_iterator(I current) : base_(std::move(current)) {} - [[nodiscard]] constexpr I const& base() const& { return base_; } + constexpr I const& base() const& { return base_; } - [[nodiscard]] constexpr I base() && { return std::move(base_); } + constexpr I base() && { return std::move(base_); } constexpr difference_type stride_count() const { return stride_count_; }