diff --git a/src/corelib/global/qflags.h b/src/corelib/global/qflags.h index e048e73a369..c3174085537 100644 --- a/src/corelib/global/qflags.h +++ b/src/corelib/global/qflags.h @@ -172,6 +172,8 @@ private: return (it == end ? Int(0) : (Int(*it) | initializer_list_helper(it + 1, end))); } + template friend QDataStream &operator<<(QDataStream &, QFlags); + template friend QDataStream &operator>>(QDataStream &, QFlags &); Int i; }; diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h index 32b0f96ab89..2a5622f6030 100644 --- a/src/corelib/serialization/qdatastream.h +++ b/src/corelib/serialization/qdatastream.h @@ -516,16 +516,11 @@ inline QDataStream &QDataStream::operator<<(quint64 i) template inline QDataStream &operator<<(QDataStream &s, QFlags e) -{ return s << typename QFlags::Int(e); } +{ return s << e.i; } template inline QDataStream &operator>>(QDataStream &s, QFlags &e) -{ - typename QFlags::Int i; - s >> i; - e = QFlag(i); - return s; -} +{ return s >> e.i; } template typename std::enable_if_t::value, QDataStream &>