From 658dfef50085cbf7ac1157528d0ccc2b8a698c34 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Fri, 28 Jun 2013 21:52:51 +0200 Subject: Remove default argument from declarations of qHash as friend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It's illegal in C++11: §8.3.6.4 [dcl.fct.default] "If a friend declaration specifies a default argument expression, that declaration shall be a definition and shall be the only declaration of the function or function template in the translation unit." Clang is starting to enforce this, thus it's making qtbase not compiling. Task-number: QTBUG-32100 Change-Id: Ifd9d4f62354d7cf4ccf275f36aab64e05c59efff Reviewed-by: Thorbjørn Lund Martsum Reviewed-by: Mitch Curtis Reviewed-by: Olivier Goffart --- src/corelib/io/qurl.h | 6 +++++- src/corelib/itemmodels/qabstractitemmodel.h | 5 ++++- src/network/kernel/qhostaddress.h | 6 +++++- 3 files changed, 14 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h index de4ce754fb..cf208bf71e 100644 --- a/src/corelib/io/qurl.h +++ b/src/corelib/io/qurl.h @@ -114,6 +114,10 @@ public: template class QTypeInfo > : public QTypeInfoMerger, E1, E2> {}; +class QUrl; +// qHash is a friend, but we can't use default arguments for friends (§8.3.6.4) +Q_CORE_EXPORT uint qHash(const QUrl &url, uint seed = 0) Q_DECL_NOTHROW; + class Q_CORE_EXPORT QUrl { public: @@ -324,7 +328,7 @@ public: static QList fromStringList(const QStringList &uris, ParsingMode mode = TolerantMode); static void setIdnWhitelist(const QStringList &); - friend Q_CORE_EXPORT uint qHash(const QUrl &url, uint seed = 0) Q_DECL_NOTHROW; + friend Q_CORE_EXPORT uint qHash(const QUrl &url, uint seed) Q_DECL_NOTHROW; private: QUrlPrivate *d; diff --git a/src/corelib/itemmodels/qabstractitemmodel.h b/src/corelib/itemmodels/qabstractitemmodel.h index 215ccce44d..f3bf2c1019 100644 --- a/src/corelib/itemmodels/qabstractitemmodel.h +++ b/src/corelib/itemmodels/qabstractitemmodel.h @@ -98,6 +98,9 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QModelIndex &); class QPersistentModelIndexData; +// qHash is a friend, but we can't use default arguments for friends (§8.3.6.4) +uint qHash(const QPersistentModelIndex &index, uint seed = 0); + class Q_CORE_EXPORT QPersistentModelIndex { public: @@ -128,7 +131,7 @@ public: bool isValid() const; private: QPersistentModelIndexData *d; - friend uint qHash(const QPersistentModelIndex &, uint seed = 0); + friend uint qHash(const QPersistentModelIndex &, uint seed); #ifndef QT_NO_DEBUG_STREAM friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QPersistentModelIndex &); #endif diff --git a/src/network/kernel/qhostaddress.h b/src/network/kernel/qhostaddress.h index 77a2ec4105..49032850be 100644 --- a/src/network/kernel/qhostaddress.h +++ b/src/network/kernel/qhostaddress.h @@ -64,6 +64,10 @@ public: typedef QIPv6Address Q_IPV6ADDR; +class QHostAddress; +// qHash is a friend, but we can't use default arguments for friends (§8.3.6.4) +Q_NETWORK_EXPORT uint qHash(const QHostAddress &key, uint seed = 0); + class Q_NETWORK_EXPORT QHostAddress { public: @@ -121,7 +125,7 @@ public: static QPair parseSubnet(const QString &subnet); - friend Q_NETWORK_EXPORT uint qHash(const QHostAddress &key, uint seed = 0); + friend Q_NETWORK_EXPORT uint qHash(const QHostAddress &key, uint seed); protected: QScopedPointer d; }; -- cgit v1.2.3