From a4fd95c51a4347482d6d0a815657d0b5bdaf06db 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.9 6.8 6.5 6.2 Change-Id: I85caa64c1caca6d77569aa2ceb868a4aa0e5578d Reviewed-by: Giuseppe D'Angelo Reviewed-by: Magdalena Stojek Reviewed-by: Lena Biliaieva --- 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 cea77ec16b2..ba42ccb7d79 100644 --- a/tests/auto/corelib/tools/qset/tst_qset.cpp +++ b/tests/auto/corelib/tools/qset/tst_qset.cpp @@ -33,6 +33,7 @@ private slots: void cpp17ctad(); void remove(); void removeOnlyDetachesIfSomethingGetsRemoved(); + void removeIfDoesNotAllowThePredicateToModifyTheElement(); void contains(); void containsSet(); void begin(); @@ -424,6 +425,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;