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 <thiago.macieira@intel.com>
bb10
Marc Mutz 2012-09-26 16:16:14 +02:00 committed by The Qt Project
parent ce1f994e9b
commit a19fd0f926
1 changed files with 3 additions and 0 deletions

View 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;