diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2012-09-20 16:21:30 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-09-22 19:19:54 +0200 |
commit | a2d1cb87a01baede8bd163ea9c51077c53a87071 (patch) | |
tree | f926bf6315818c3aed64a84a1b640d6a3dc10f03 | |
parent | 7121bcca2d937dfad7ba4bd549a57c74dcbf856b (diff) | |
download | qtbase-a2d1cb87a01baede8bd163ea9c51077c53a87071.tar.gz |
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 <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
-rw-r--r-- | src/corelib/global/qflags.h | 3 |
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; public: typedef Enum enum_type; |