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>
This commit is contained in:
parent
7121bcca2d
commit
a2d1cb87a0
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user