summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools
diff options
context:
space:
mode:
authorMarcel Krems <m.krems@software-vision.eu>2020-08-28 21:05:59 +0200
committerMarcel Krems <m.krems@software-vision.eu>2020-08-29 15:07:54 +0200
commit2a896becdf500ce7f5db2d059b1445fb05a8c329 (patch)
treebf56078bec4d683b529db3b66bae95635432d09a /src/corelib/tools
parent7e1432898e30cbbae3ddbfb855f42b45cab45b16 (diff)
qarraydataops: Fix compiler warnings under MSVC 2019.7
qarraydataops.h(444): warning C4127: conditional expression is constant qarraydataops.h(444): note: consider using 'if constexpr' statement instead ... qabstractitemmodel.h(261): note: see reference to class template instantiation 'QList<int>' being compiled qarraydataops.h(1209) : warning C4702: unreachable code qarraydataops.h(1104): warning C4913: user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used src/corelib/kernel/qobjectdefs_impl.h(96): note: could be 'void QtPrivate::operator ,<std::reverse_iterator<QTypedArrayData<T>::iterator>>(std::reverse_iterator<QTypedArrayData<T>::iterator>,const QtPrivate::ApplyReturnValue<void> &)' with [ T=QTextEdit::ExtraSelection ] qarraydataops.h(1104): note: while trying to match the argument list '(std::reverse_iterator<QTypedArrayData<T>::iterator>, std::reverse_iterator<QTypedArrayData<T>::iterator>)' with [ T=QTextEdit::ExtraSelection ] ... codeedit.cpp(84): note: see reference to class template instantiation 'QList<QTextEdit::ExtraSelection>' being compiled Change-Id: I3c5007e40f709c28bc8b3b3bec5ea98ea5f34e5a Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/corelib/tools')
-rw-r--r--src/corelib/tools/qarraydataops.h70
1 files changed, 45 insertions, 25 deletions
diff --git a/src/corelib/tools/qarraydataops.h b/src/corelib/tools/qarraydataops.h
index 03ba93198c..9fdf0738e1 100644
--- a/src/corelib/tools/qarraydataops.h
+++ b/src/corelib/tools/qarraydataops.h
@@ -441,16 +441,20 @@ public:
// only use memcmp for fundamental types or pointers.
// Other types could have padding in the data structure or custom comparison
// operators that would break the comparison using memcmp
- if (QArrayDataPointer<T>::pass_parameter_by_value)
+ if constexpr (QArrayDataPointer<T>::pass_parameter_by_value) {
return ::memcmp(begin1, begin2, n * sizeof(T)) == 0;
- const T *end1 = begin1 + n;
- while (begin1 != end1) {
- if (*begin1 == *begin2)
- ++begin1, ++begin2;
- else
- return false;
+ } else {
+ const T *end1 = begin1 + n;
+ while (begin1 != end1) {
+ if (*begin1 == *begin2) {
+ ++begin1;
+ ++begin2;
+ } else {
+ return false;
+ }
+ }
+ return true;
}
- return true;
}
void reallocate(qsizetype alloc, typename Data::ArrayOptions options)
@@ -587,12 +591,14 @@ public:
// Copy assign over existing elements
while (readIter != where) {
- --readIter, --writeIter;
+ --readIter;
+ --writeIter;
*writeIter = *readIter;
}
while (writeIter != where) {
- --e, --writeIter;
+ --e;
+ --writeIter;
*writeIter = *e;
}
}
@@ -619,12 +625,14 @@ public:
// Construct new elements in array
while (writeIter != step1End) {
new (writeIter) T(*readIter);
- ++readIter, ++writeIter;
+ ++readIter;
+ ++writeIter;
}
while (writeIter != begin) {
new (writeIter) T(*b);
- ++b, ++writeIter;
+ ++b;
+ ++writeIter;
}
destroyer.commit();
@@ -634,12 +642,14 @@ public:
// Copy assign over existing elements
while (readIter != where) {
*writeIter = *readIter;
- ++readIter, ++writeIter;
+ ++readIter;
+ ++writeIter;
}
while (writeIter != where) {
*writeIter = *b;
- ++b, ++writeIter;
+ ++b;
+ ++writeIter;
}
}
@@ -683,12 +693,14 @@ public:
// Copy assign over existing elements
while (readIter != where) {
- --readIter, --writeIter;
+ --readIter;
+ --writeIter;
*writeIter = *readIter;
}
while (writeIter != where) {
- --n, --writeIter;
+ --n;
+ --writeIter;
*writeIter = t;
}
}
@@ -712,7 +724,8 @@ public:
// Construct new elements in array
while (writeIter != step1End) {
new (writeIter) T(*readIter);
- ++readIter, ++writeIter;
+ ++readIter;
+ ++writeIter;
}
while (writeIter != begin) {
@@ -727,7 +740,8 @@ public:
// Copy assign over existing elements
while (readIter != where) {
*writeIter = *readIter;
- ++readIter, ++writeIter;
+ ++readIter;
+ ++writeIter;
}
while (writeIter != where) {
@@ -784,7 +798,8 @@ public:
// onto b to the new end
while (e != end) {
*b = *e;
- ++b, ++e;
+ ++b;
+ ++e;
}
// destroy the final elements at the end
@@ -808,7 +823,8 @@ public:
// move (by assignment) the elements from begin to b
// onto the new begin to e
while (b != begin) {
- --b, --e;
+ --b;
+ --e;
*e = *b;
}
@@ -835,10 +851,12 @@ public:
{
const T *end1 = begin1 + n;
while (begin1 != end1) {
- if (*begin1 == *begin2)
- ++begin1, ++begin2;
- else
+ if (*begin1 == *begin2) {
+ ++begin1;
+ ++begin2;
+ } else {
return false;
+ }
}
return true;
}
@@ -1101,7 +1119,8 @@ private:
// step 2. move assign over existing elements in the overlapping
// region (if there's an overlap)
while (e != begin) {
- --start, --e;
+ --start;
+ --e;
*start = std::move_if_noexcept(*e);
}
@@ -1205,8 +1224,9 @@ private:
|| std::is_same_v<RemovedConstVolatileIt, const volatile T *>;
if constexpr (selfIterator) {
return (first >= this->begin() && last <= this->end());
+ } else {
+ return false;
}
- return false;
};
const bool inRange = iteratorsInRange(b, e);