From a19fd0f9265bed96197a6823887c6f03fc23112d Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 26 Sep 2012 16:16:14 +0200 Subject: QFlags: fail for 64-bit enums 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 --- src/corelib/global/qflags.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/corelib/global/qflags.h') diff --git a/src/corelib/global/qflags.h b/src/corelib/global/qflags.h index 7cf06d7e88..faacf7321c 100644 --- a/src/corelib/global/qflags.h +++ b/src/corelib/global/qflags.h @@ -77,6 +77,9 @@ Q_DECL_CONSTEXPR inline QIncompatibleFlag::QIncompatibleFlag(int ai) : i(ai) {} template 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; -- cgit v1.2.3