diff options
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/global/qflags.h | 2 | ||||
-rw-r--r-- | src/corelib/serialization/qdatastream.h | 9 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/corelib/global/qflags.h b/src/corelib/global/qflags.h index cf0cd4b155..2319a78877 100644 --- a/src/corelib/global/qflags.h +++ b/src/corelib/global/qflags.h @@ -97,8 +97,6 @@ class QFlags struct Private; typedef int (Private::*Zero); #endif - template <typename E> friend QDataStream &operator>>(QDataStream &, QFlags<E> &); - template <typename E> friend QDataStream &operator<<(QDataStream &, QFlags<E>); public: #if defined(Q_CC_MSVC) || defined(Q_CLANG_QDOC) // see above for MSVC diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h index 93eaaff43b..3a234ab15e 100644 --- a/src/corelib/serialization/qdatastream.h +++ b/src/corelib/serialization/qdatastream.h @@ -396,11 +396,16 @@ inline QDataStream &QDataStream::operator<<(quint64 i) template <typename Enum> inline QDataStream &operator<<(QDataStream &s, QFlags<Enum> e) -{ return s << e.i; } +{ return s << typename QFlags<Enum>::Int(e); } template <typename Enum> inline QDataStream &operator>>(QDataStream &s, QFlags<Enum> &e) -{ return s >> e.i; } +{ + typename QFlags<Enum>::Int i; + s >> i; + e = QFlag(i); + return s; +} template <typename T> typename std::enable_if_t<std::is_enum<T>::value, QDataStream &> |