QFlags: fail for 64-bit enums
authorMarc Mutz <marc.mutz@kdab.com>
Wed, 26 Sep 2012 14:16:14 +0000 (16:16 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 27 Sep 2012 00:25:15 +0000 (02:25 +0200)
An int is not enough to hold all values of a 64-bit enum, so
don't allow to compile QFlags for such enums.

Change-Id: Ia291c4a5e2160dfd6d5a35e61a7f71ab571b9d9a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
src/corelib/global/qflags.h

index 7cf06d7..faacf73 100644 (file)
@@ -77,6 +77,9 @@ Q_DECL_CONSTEXPR inline QIncompatibleFlag::QIncompatibleFlag(int ai) : i(ai) {}
 template<typename Enum>
 class QFlags
 {
+    Q_STATIC_ASSERT_X((sizeof(Enum) <= sizeof(int)),
+                      "QFlags uses an int as storage, so an enum with underlying "
+                      "long long would overflow. Qt 5.1 will have support for 64bit enums.");
     struct Private;
     typedef int (Private::*Zero);
     int i;