From 939338c273539b51e622e61e5f375571eff3619e Mon Sep 17 00:00:00 2001
From: Marc Mutz <marc.mutz@kdab.com>
Date: Tue, 21 Aug 2012 10:05:41 +0200
Subject: [PATCH] QVariant: prevent QVariant(QMetaType::Type) from compiling
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Reported-by: Stephen Chu <stephen@ju-ju.com>

Change-Id: I298973174ff10f4462f04f3358c974c04dfd3383
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Reviewed-by: Stephen Chu <stephen@ju-ju.com>
---
 src/corelib/kernel/qvariant.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h
index bde67ed5ac9..07043b19772 100644
--- a/src/corelib/kernel/qvariant.h
+++ b/src/corelib/kernel/qvariant.h
@@ -454,6 +454,13 @@ public:
 private:
     // force compile error, prevent QVariant(bool) to be called
     inline QVariant(void *) Q_DECL_EQ_DELETE;
+    // QVariant::Type is marked as \obsolete, but we don't want to
+    // provide a constructor from its intended replacement,
+    // QMetaType::Type, instead, because the idea behind these
+    // constructors is flawed in the first place. But we also don't
+    // want QVariant(QMetaType::String) to compile and falsely be an
+    // int variant, so delete this constructor:
+    QVariant(QMetaType::Type) Q_DECL_EQ_DELETE;
 #ifdef QT_NO_CAST_FROM_ASCII
     // force compile error when implicit conversion is not wanted
     inline QVariant(const char *) Q_DECL_EQ_DELETE;
-- 
GitLab