From c1825660aa87ec9c76ce6de4013e80660bc5ab40 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 17 Jan 2025 16:11:21 +0100 Subject: [PATCH] tst_QSet: check whether QSet::removeIf() can modify elements It can't, pfew. Was wondering for a moment, but of course, even the QSet::iterator is really a const_iterator. Pick-to: 6.5 6.2 Change-Id: I85caa64c1caca6d77569aa2ceb868a4aa0e5578d Reviewed-by: Giuseppe D'Angelo Reviewed-by: Magdalena Stojek Reviewed-by: Lena Biliaieva (cherry picked from commit a4fd95c51a4347482d6d0a815657d0b5bdaf06db) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit 9120bb9e0393bd10e73510d0103bc330f5b92696) --- tests/auto/corelib/tools/qset/tst_qset.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/auto/corelib/tools/qset/tst_qset.cpp b/tests/auto/corelib/tools/qset/tst_qset.cpp index 5c86d496cb..389105b79d 100644 --- a/tests/auto/corelib/tools/qset/tst_qset.cpp +++ b/tests/auto/corelib/tools/qset/tst_qset.cpp @@ -30,6 +30,7 @@ private slots: void cpp17ctad(); void remove(); void removeOnlyDetachesIfSomethingGetsRemoved(); + void removeIfDoesNotAllowThePredicateToModifyTheElement(); void contains(); void containsSet(); void begin(); @@ -394,6 +395,17 @@ void tst_QSet::removeOnlyDetachesIfSomethingGetsRemoved() QVERIFY(copy.isDetached()); } +void tst_QSet::removeIfDoesNotAllowThePredicateToModifyTheElement() +{ + QSet set = {0, 1, 2, 3}; + set.removeIf([](auto &&e) { + if constexpr (!std::is_const_v>) + e *= 2; + return false; + }); + QCOMPARE(set, QSet({0, 1, 2, 3})); +} + void tst_QSet::contains() { QSet set1;