diff options
authorMarc Mutz <>2012-09-20 16:21:30 +0200
committerThe Qt Project <>2012-09-22 19:19:54 +0200
commita2d1cb87a01baede8bd163ea9c51077c53a87071 (patch)
parent7121bcca2d937dfad7ba4bd549a57c74dcbf856b (diff)
QFlags: don't provide a constructor from void**
Use a pointer-to-member instead of void** for Zero, the type that is used to accept only a literal 0, but not other ints, as QFlags ctor arguments. This was developed while trying to find the cause for a build failure in the qCompare<QIcon> specialisation after adding underlying-enum detection to QFlags, and it didn't help, but I think it's a saver alternative to void**, in particular since the ctor in question is implicit. Change-Id: I71c67b0b50e9404e4e42836d09d62663296f58af Reviewed-by: Thiago Macieira <> Reviewed-by: Olivier Goffart <>
1 files changed, 2 insertions, 1 deletions
diff --git a/src/corelib/global/qflags.h b/src/corelib/global/qflags.h
index df104417cd..9b263123a0 100644
--- a/src/corelib/global/qflags.h
+++ b/src/corelib/global/qflags.h
@@ -77,7 +77,8 @@ Q_DECL_CONSTEXPR inline QIncompatibleFlag::QIncompatibleFlag(int ai) : i(ai) {}
template<typename Enum>
class QFlags
- typedef void **Zero;
+ struct Private;
+ typedef int (Private::*Zero);
int i;
typedef Enum enum_type;