From 3f8896d77e80f652bf1b7d3a25eb0a6be3ba4473 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 2 May 2017 17:57:21 +0200 Subject: [PATCH] QSet: add missing insert-with-hint Since QHash is missing the overload, too, just ignore the hint for now, but provide the STL-compatible signature so generic code can use QSet as a normal sequential container. [ChangeLog][QtCore][QSet] Added insert() overload taking an insertion hint, for STL compatibility. Change-Id: I9fe41877343ebff721b650fb7b9cd4e06b6608d8 Reviewed-by: Thiago Macieira Reviewed-by: Andrei Golubev --- src/corelib/tools/qset.h | 3 +++ src/corelib/tools/qset.qdoc | 16 ++++++++++++++++ .../kernel/qmetacontainer/tst_qmetacontainer.cpp | 4 ++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qset.h b/src/corelib/tools/qset.h index 5f1500e7471..a3e541ea5e7 100644 --- a/src/corelib/tools/qset.h +++ b/src/corelib/tools/qset.h @@ -198,6 +198,9 @@ public: typedef qsizetype size_type; inline bool empty() const { return isEmpty(); } + + iterator insert(const_iterator, const T &value) { return insert(value); } + // comfort inline QSet &operator<<(const T &value) { insert(value); return *this; } inline QSet &operator|=(const QSet &other) { unite(other); return *this; } diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc index a98ce6cb060..4f26d1678c9 100644 --- a/src/corelib/tools/qset.qdoc +++ b/src/corelib/tools/qset.qdoc @@ -507,6 +507,22 @@ for STL compatibility. It is equivalent to isEmpty(). */ +/*! + \fn QSet::insert(const_iterator it, const T &value) + \overload + \since 6.1 + + Inserts item \a value into the set, if \a value isn't already + in the set, and returns an iterator pointing at the inserted + item. + + The iterator \a it is ignored. + + This function is provided for compatibility with the STL. + + \sa operator<<(), remove(), contains() +*/ + /*! \fn template bool QSet::count() const diff --git a/tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp b/tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp index eee55a3535e..f2e0328ddc1 100644 --- a/tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp +++ b/tests/auto/corelib/kernel/qmetacontainer/tst_qmetacontainer.cpp @@ -143,7 +143,7 @@ static_assert(!QContainerInfo::can_set_value_at_iterator_v>); static_assert(QContainerInfo::can_set_value_at_iterator_v>); static_assert(QContainerInfo::can_insert_value_at_iterator_v>); -static_assert(!QContainerInfo::can_insert_value_at_iterator_v>); +static_assert(QContainerInfo::can_insert_value_at_iterator_v>); static_assert(!QContainerInfo::can_insert_value_at_iterator_v); static_assert(QContainerInfo::can_insert_value_at_iterator_v>); static_assert(!QContainerInfo::can_insert_value_at_iterator_v>); @@ -267,7 +267,7 @@ void tst_QMetaContainer::testSequence_data() << static_cast(&qset) << QMetaSequence::fromContainer>() << QMetaType::fromType() - << true << false << false << false << false << false << true << false; + << true << false << false << false << false << true << true << false; QTest::addRow("std::set") << static_cast(&stdset) << QMetaSequence::fromContainer>()