From 45be71bf7d7c855e74b84d2fabb4e626afc57a22 Mon Sep 17 00:00:00 2001 From: Roman Pasechnik Date: Thu, 10 Jan 2013 14:45:18 +0200 Subject: Added initializer list constructors for Qt associative containers. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Affected: QSet, QMap, QMultiMap, QHash, QMultiHash. Task-number: QTBUG-25679 Change-Id: I01f3ecfbca805f4c053a75232188bd2a77fdb1f2 Reviewed-by: Thiago Macieira Reviewed-by: Jędrzej Nowacki --- src/corelib/tools/qmap.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/corelib/tools/qmap.h') diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h index b0ec6fb3c6..93134a43dd 100644 --- a/src/corelib/tools/qmap.h +++ b/src/corelib/tools/qmap.h @@ -54,6 +54,10 @@ #include #include +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -327,6 +331,14 @@ class QMap public: inline QMap() : d(static_cast *>(const_cast(&QMapDataBase::shared_null))) { } +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QMap(std::initializer_list > list) + : d(static_cast *>(const_cast(&QMapDataBase::shared_null))) + { + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif QMap(const QMap &other); inline ~QMap() { if (!d->ref.deref()) d->destroy(); } @@ -960,6 +972,13 @@ class QMultiMap : public QMap { public: QMultiMap() {} +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QMultiMap(std::initializer_list > list) + { + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif QMultiMap(const QMap &other) : QMap(other) {} inline void swap(QMultiMap &other) { QMap::swap(other); } -- cgit v1.2.3