summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization/qdatastream.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-07-06 17:53:58 +0200
committerLars Knoll <lars.knoll@qt.io>2020-08-15 14:43:43 +0200
commit0e6a327f1464ab1127e424b47bb3ecd98c306a10 (patch)
tree1c5ac6de5e1acf5e69932bcbae66241ddeed64da /src/corelib/serialization/qdatastream.h
parentdf289c822dc818e3ac78a9975b7a3f98a1486347 (diff)
Remove friend declarations that aren't required
Those are problematic as they are also interpreted as forward declarations of methods that are defined inline in qdatastream.h and might never get instantiated. This can lead to problems if template code checks for the existence of the method. Change-Id: I4550a6bc70ebd7edc57fe0420b89b453195971d0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/corelib/serialization/qdatastream.h')
-rw-r--r--src/corelib/serialization/qdatastream.h9
1 files changed, 7 insertions, 2 deletions
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 &>