From 8d907213efdfb6d26f4de9d91941acff3a8fe5bc Mon Sep 17 00:00:00 2001 From: Rym Bouabid Date: Thu, 30 May 2024 12:55:25 +0200 Subject: [PATCH] totally_ordered_wrapper: add reset(P) function The ctor is explicit so there should not be an assignment operator op=. Changing the assignment to = Qt::totally_ordered_wrapper(ptr) is also possible but if ptr is nullptr, I have to forward declare a pointer as follow "T *n = nullptr" and then call Qt::totally_ordered_wrapper(n). So I think adding reset(P) function is better. Found in API Review. Change-Id: I0acfcacc97a43f3cf8bfa65b2b16a65cae95b727 Reviewed-by: Ivan Solovev Reviewed-by: Marc Mutz (cherry picked from commit dc49d84abc35dfbbc4028a5f86017786cff13ae7) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/global/qcomparehelpers.h | 1 + .../auto/corelib/global/qcomparehelpers/tst_qcomparehelpers.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/corelib/global/qcomparehelpers.h b/src/corelib/global/qcomparehelpers.h index 02aa9d9283a..fce751be09f 100644 --- a/src/corelib/global/qcomparehelpers.h +++ b/src/corelib/global/qcomparehelpers.h @@ -651,6 +651,7 @@ public: explicit constexpr totally_ordered_wrapper(P p) noexcept : ptr(p) {} constexpr P get() const noexcept { return ptr; } + constexpr void reset(P p) noexcept { ptr = p; } constexpr P operator->() const noexcept { return get(); } constexpr T& operator*() const noexcept { return *get(); } diff --git a/tests/auto/corelib/global/qcomparehelpers/tst_qcomparehelpers.cpp b/tests/auto/corelib/global/qcomparehelpers/tst_qcomparehelpers.cpp index 69571c9b234..466723a271d 100644 --- a/tests/auto/corelib/global/qcomparehelpers/tst_qcomparehelpers.cpp +++ b/tests/auto/corelib/global/qcomparehelpers/tst_qcomparehelpers.cpp @@ -616,6 +616,8 @@ QT_WARNING_POP QCOMPARE_NE(Qt::compareThreeWay(b.get(), dWrapper), Qt::strong_ordering::equivalent); QCOMPARE_EQ(Qt::compareThreeWay(bWrapper, nullptr), Qt::strong_ordering::greater); QCOMPARE_EQ(Qt::compareThreeWay(nullptr, dWrapper), Qt::strong_ordering::less); + dWrapper.reset(nullptr); + QCOMPARE_EQ(Qt::compareThreeWay(nullptr, dWrapper), Qt::strong_ordering::equivalent); #undef TEST_BUILTIN }