summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qarraydata.h
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2012-09-28 14:02:29 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-10-19 05:35:39 +0200
commitb8fe5e1bbc7f341d03d2704a6110d6e3240589bb (patch)
tree733f2a430ba2b10e46077026a8e7dbb115eb7816 /src/corelib/tools/qarraydata.h
parentf7f9a28a26a071f2f4a3823de1cdf162ac306314 (diff)
Make sure functions returning iterators have an iterator as parameter
The IA-64 C++ ABI does not encode the return type for non-template functions (QVector is the template, not the function), which means that these two functions have the same signature: Node *QVector<Node>::begin() typename class QTypedArrayData<Node>::iterator QVector<Node>::begin() [both are _ZN7QVectorI4NodeE5beginEv] When linking compilation units compiled with different QT_STRICT_ITERATORS settings, only one of the two out-of-line copies will survive. Depending on the ABI, we may have a problem: the ABI can say that a function returning a structure takes an implicit first parameter, which a function returning a regular pointer doesn't. Task-number: QTBUG-27277 Change-Id: I57a59e5a7c46f55faabfe85c073dca89d2a7bbf3 Reviewed-by: Jan Kundrát <jkt@flaska.net> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/tools/qarraydata.h')
-rw-r--r--src/corelib/tools/qarraydata.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/corelib/tools/qarraydata.h b/src/corelib/tools/qarraydata.h
index a67255ad68..7fecbbbeeb 100644
--- a/src/corelib/tools/qarraydata.h
+++ b/src/corelib/tools/qarraydata.h
@@ -209,12 +209,12 @@ struct QTypedArrayData
T *data() { return static_cast<T *>(QArrayData::data()); }
const T *data() const { return static_cast<const T *>(QArrayData::data()); }
- iterator begin() { return data(); }
- iterator end() { return data() + size; }
- const_iterator begin() const { return data(); }
- const_iterator end() const { return data() + size; }
- const_iterator constBegin() const { return data(); }
- const_iterator constEnd() const { return data() + size; }
+ iterator begin(iterator = iterator()) { return data(); }
+ iterator end(iterator = iterator()) { return data() + size; }
+ const_iterator begin(const_iterator = const_iterator()) const { return data(); }
+ const_iterator end(const_iterator = const_iterator()) const { return data() + size; }
+ const_iterator constBegin(const_iterator = const_iterator()) const { return data(); }
+ const_iterator constEnd(const_iterator = const_iterator()) const { return data() + size; }
class AlignmentDummy { QArrayData header; T data; };