QJsonObject has random-access iterators

... but they were only marked as bidirectional.

Fixed.

This change is slightly BiC, because if some class used tag
dispatching on this iterator type, a recompile might now
pick a different overload, and the old one may not be
available to a user anymore (no longer instantiated).

I do not think Qt uses that technique, yet, though. Not on
iterator categories, at least.

Change-Id: I75fb334af7e191f882d11575dec83c879a6b50ee
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Marc Mutz 2016-01-26 23:11:20 +01:00
parent 5f472cae71
commit 7236721bf8
2 changed files with 12 additions and 6 deletions

View File

@ -679,8 +679,11 @@ QJsonObject::const_iterator QJsonObject::constFind(const QString &key) const
/*! \typedef QJsonObject::iterator::iterator_category
A synonym for \e {std::bidirectional_iterator_tag} indicating
this iterator is a bidirectional iterator.
A synonym for \e {std::random_access_iterator_tag} indicating
this iterator is a random-access iterator.
\note In Qt versions before 5.6, this was set by mistake to
\e {std::bidirectional_iterator_tag}.
*/
/*! \typedef QJsonObject::iterator::reference
@ -886,8 +889,11 @@ QJsonObject::const_iterator QJsonObject::constFind(const QString &key) const
/*! \typedef QJsonObject::const_iterator::iterator_category
A synonym for \e {std::bidirectional_iterator_tag} indicating
this iterator is a bidirectional iterator.
A synonym for \e {std::random_access_iterator_tag} indicating
this iterator is a random-access iterator.
\note In Qt versions before 5.6, this was set by mistake to
\e {std::bidirectional_iterator_tag}.
*/
/*! \typedef QJsonObject::const_iterator::reference

View File

@ -100,7 +100,7 @@ public:
int i;
public:
typedef std::bidirectional_iterator_tag iterator_category;
typedef std::random_access_iterator_tag iterator_category;
typedef int difference_type;
typedef QJsonValue value_type;
typedef QJsonValueRef reference;
@ -143,7 +143,7 @@ public:
int i;
public:
typedef std::bidirectional_iterator_tag iterator_category;
typedef std::random_access_iterator_tag iterator_category;
typedef int difference_type;
typedef QJsonValue value_type;
typedef QJsonValue reference;