diff --git a/src/corelib/global/qflags.h b/src/corelib/global/qflags.h index 0ec7f4383f5..05225b98d23 100644 --- a/src/corelib/global/qflags.h +++ b/src/corelib/global/qflags.h @@ -12,7 +12,6 @@ QT_BEGIN_NAMESPACE -class QDataStream; template class QFlags; class QFlag @@ -206,10 +205,6 @@ private: return (it == end ? Int(0) : (Int(*it) | initializer_list_helper(it + 1, end))); } -#ifndef QT_NO_DATASTREAM - template friend QDataStream &operator<<(QDataStream &, QFlags); - template friend QDataStream &operator>>(QDataStream &, QFlags &); -#endif using Base::i; }; diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h index 264454e9b6a..d03070b9195 100644 --- a/src/corelib/serialization/qdatastream.h +++ b/src/corelib/serialization/qdatastream.h @@ -517,11 +517,16 @@ inline QDataStream &QDataStream::operator<<(quint64 i) template inline QDataStream &operator<<(QDataStream &s, QFlags e) -{ return s << e.i; } +{ return s << e.toInt(); } template inline QDataStream &operator>>(QDataStream &s, QFlags &e) -{ return s >> e.i; } +{ + typename QFlags::Int i; + s >> i; + e = QFlags::fromInt(i); + return s; +} template typename std::enable_if_t::value, QDataStream &> diff --git a/src/corelib/text/qchar.h b/src/corelib/text/qchar.h index fb6f3136a59..c090da824ef 100644 --- a/src/corelib/text/qchar.h +++ b/src/corelib/text/qchar.h @@ -11,7 +11,7 @@ QT_BEGIN_NAMESPACE - +class QDataStream; class QString; struct QLatin1Char diff --git a/src/corelib/tools/qline.h b/src/corelib/tools/qline.h index 03dac30e162..b8523788cf2 100644 --- a/src/corelib/tools/qline.h +++ b/src/corelib/tools/qline.h @@ -8,6 +8,7 @@ QT_BEGIN_NAMESPACE +class QDataStream; class QLineF; /******************************************************************************* diff --git a/src/corelib/tools/qmargins.h b/src/corelib/tools/qmargins.h index 3b29860d663..8782b147afc 100644 --- a/src/corelib/tools/qmargins.h +++ b/src/corelib/tools/qmargins.h @@ -14,6 +14,7 @@ QT_BEGIN_NAMESPACE QT_ENABLE_P0846_SEMANTICS_FOR(get) +class QDataStream; class QMarginsF; /***************************************************************************** diff --git a/src/corelib/tools/qpoint.h b/src/corelib/tools/qpoint.h index 50b4c864be8..d9a0fa53235 100644 --- a/src/corelib/tools/qpoint.h +++ b/src/corelib/tools/qpoint.h @@ -19,6 +19,7 @@ QT_BEGIN_NAMESPACE QT_ENABLE_P0846_SEMANTICS_FOR(get) +class QDataStream; class QPointF; class QPoint