fixup oversight in rvalue overloads of operator+=() and operator<<()
ammends 4dee5446bee9c7417bf6f5dc44294a0b7238a9ba Change-Id: Ia0ca27644eb71815a93d6e76681b8a9e61a4e7ab Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
This commit is contained in:
parent
02ed1b36da
commit
edf96b984d
@ -176,11 +176,11 @@ public:
|
||||
inline QVarLengthArray<T, Prealloc> &operator<<(const T &t)
|
||||
{ append(t); return *this; }
|
||||
inline QVarLengthArray<T, Prealloc> &operator<<(T &&t)
|
||||
{ append(t); return *this; }
|
||||
{ append(std::move(t)); return *this; }
|
||||
inline QVarLengthArray<T, Prealloc> &operator+=(const T &t)
|
||||
{ append(t); return *this; }
|
||||
inline QVarLengthArray<T, Prealloc> &operator+=(T &&t)
|
||||
{ append(t); return *this; }
|
||||
{ append(std::move(t)); return *this; }
|
||||
|
||||
void prepend(T &&t);
|
||||
void prepend(const T &t);
|
||||
|
@ -284,9 +284,9 @@ public:
|
||||
inline QVector<T> &operator<<(const QVector<T> &l)
|
||||
{ *this += l; return *this; }
|
||||
inline QVector<T> &operator+=(T &&t)
|
||||
{ append(t); return *this; }
|
||||
{ append(std::move(t)); return *this; }
|
||||
inline QVector<T> &operator<<(T &&t)
|
||||
{ append(t); return *this; }
|
||||
{ append(std::move(t)); return *this; }
|
||||
|
||||
QList<T> toList() const;
|
||||
|
||||
|
@ -957,19 +957,21 @@ void tst_QVarLengthArray::insertMove()
|
||||
QCOMPARE(MyBase::copyCount, 0);
|
||||
|
||||
{
|
||||
QVarLengthArray<MyMovable, 4> vec;
|
||||
QVarLengthArray<MyMovable, 6> vec;
|
||||
MyMovable m1;
|
||||
MyMovable m2;
|
||||
MyMovable m3;
|
||||
MyMovable m4;
|
||||
MyMovable m5;
|
||||
MyMovable m6;
|
||||
QCOMPARE(MyBase::copyCount, 0);
|
||||
QCOMPARE(MyBase::liveCount, 4);
|
||||
QCOMPARE(MyBase::liveCount, 6);
|
||||
|
||||
vec.append(std::move(m3));
|
||||
QVERIFY(m3.wasConstructedAt(nullptr));
|
||||
QVERIFY(vec.at(0).wasConstructedAt(&m3));
|
||||
QCOMPARE(MyBase::errorCount, 0);
|
||||
QCOMPARE(MyBase::liveCount, 4);
|
||||
QCOMPARE(MyBase::liveCount, 6);
|
||||
QCOMPARE(MyBase::movedCount, 1);
|
||||
|
||||
vec.push_back(std::move(m4));
|
||||
@ -977,7 +979,7 @@ void tst_QVarLengthArray::insertMove()
|
||||
QVERIFY(vec.at(0).wasConstructedAt(&m3));
|
||||
QVERIFY(vec.at(1).wasConstructedAt(&m4));
|
||||
QCOMPARE(MyBase::errorCount, 0);
|
||||
QCOMPARE(MyBase::liveCount, 4);
|
||||
QCOMPARE(MyBase::liveCount, 6);
|
||||
QCOMPARE(MyBase::movedCount, 2);
|
||||
|
||||
vec.prepend(std::move(m1));
|
||||
@ -986,7 +988,7 @@ void tst_QVarLengthArray::insertMove()
|
||||
QVERIFY(vec.at(1).wasConstructedAt(&m3));
|
||||
QVERIFY(vec.at(2).wasConstructedAt(&m4));
|
||||
QCOMPARE(MyBase::errorCount, 0);
|
||||
QCOMPARE(MyBase::liveCount, 4);
|
||||
QCOMPARE(MyBase::liveCount, 6);
|
||||
QCOMPARE(MyBase::movedCount, 3);
|
||||
|
||||
vec.insert(1, std::move(m2));
|
||||
@ -995,11 +997,34 @@ void tst_QVarLengthArray::insertMove()
|
||||
QVERIFY(vec.at(1).wasConstructedAt(&m2));
|
||||
QVERIFY(vec.at(2).wasConstructedAt(&m3));
|
||||
QVERIFY(vec.at(3).wasConstructedAt(&m4));
|
||||
QCOMPARE(MyBase::errorCount, 0);
|
||||
QCOMPARE(MyBase::liveCount, 6);
|
||||
QCOMPARE(MyBase::movedCount, 4);
|
||||
|
||||
vec += std::move(m5);
|
||||
QVERIFY(m5.wasConstructedAt(nullptr));
|
||||
QVERIFY(vec.at(0).wasConstructedAt(&m1));
|
||||
QVERIFY(vec.at(1).wasConstructedAt(&m2));
|
||||
QVERIFY(vec.at(2).wasConstructedAt(&m3));
|
||||
QVERIFY(vec.at(3).wasConstructedAt(&m4));
|
||||
QVERIFY(vec.at(4).wasConstructedAt(&m5));
|
||||
QCOMPARE(MyBase::errorCount, 0);
|
||||
QCOMPARE(MyBase::liveCount, 6);
|
||||
QCOMPARE(MyBase::movedCount, 5);
|
||||
|
||||
vec << std::move(m6);
|
||||
QVERIFY(m6.wasConstructedAt(nullptr));
|
||||
QVERIFY(vec.at(0).wasConstructedAt(&m1));
|
||||
QVERIFY(vec.at(1).wasConstructedAt(&m2));
|
||||
QVERIFY(vec.at(2).wasConstructedAt(&m3));
|
||||
QVERIFY(vec.at(3).wasConstructedAt(&m4));
|
||||
QVERIFY(vec.at(4).wasConstructedAt(&m5));
|
||||
QVERIFY(vec.at(5).wasConstructedAt(&m6));
|
||||
|
||||
QCOMPARE(MyBase::copyCount, 0);
|
||||
QCOMPARE(MyBase::liveCount, 4);
|
||||
QCOMPARE(MyBase::liveCount, 6);
|
||||
QCOMPARE(MyBase::errorCount, 0);
|
||||
QCOMPARE(MyBase::movedCount, 4);
|
||||
QCOMPARE(MyBase::movedCount, 6);
|
||||
}
|
||||
QCOMPARE(MyBase::liveCount, 0);
|
||||
QCOMPARE(MyBase::errorCount, 0);
|
||||
@ -1013,10 +1038,14 @@ void tst_QVarLengthArray::nonCopyable()
|
||||
std::unique_ptr<int> val2(new int(2));
|
||||
std::unique_ptr<int> val3(new int(3));
|
||||
std::unique_ptr<int> val4(new int(4));
|
||||
std::unique_ptr<int> val5(new int(5));
|
||||
std::unique_ptr<int> val6(new int(6));
|
||||
int *const ptr1 = val1.get();
|
||||
int *const ptr2 = val2.get();
|
||||
int *const ptr3 = val3.get();
|
||||
int *const ptr4 = val4.get();
|
||||
int *const ptr5 = val5.get();
|
||||
int *const ptr6 = val6.get();
|
||||
|
||||
vec.append(std::move(val3));
|
||||
QVERIFY(!val3);
|
||||
@ -1035,6 +1064,22 @@ void tst_QVarLengthArray::nonCopyable()
|
||||
QVERIFY(ptr1 == vec.at(0).get());
|
||||
QVERIFY(ptr2 == vec.at(1).get());
|
||||
QVERIFY(ptr3 == vec.at(2).get());
|
||||
QVERIFY(ptr4 == vec.at(3).get());
|
||||
vec += std::move(val5);
|
||||
QVERIFY(!val5);
|
||||
QVERIFY(ptr1 == vec.at(0).get());
|
||||
QVERIFY(ptr2 == vec.at(1).get());
|
||||
QVERIFY(ptr3 == vec.at(2).get());
|
||||
QVERIFY(ptr4 == vec.at(3).get());
|
||||
QVERIFY(ptr5 == vec.at(4).get());
|
||||
vec << std::move(val6);
|
||||
QVERIFY(!val6);
|
||||
QVERIFY(ptr1 == vec.at(0).get());
|
||||
QVERIFY(ptr2 == vec.at(1).get());
|
||||
QVERIFY(ptr3 == vec.at(2).get());
|
||||
QVERIFY(ptr4 == vec.at(3).get());
|
||||
QVERIFY(ptr5 == vec.at(4).get());
|
||||
QVERIFY(ptr6 == vec.at(5).get());
|
||||
}
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_QVarLengthArray)
|
||||
|
@ -2895,12 +2895,14 @@ void tst_QVector::insertMove() const
|
||||
const int instancesCount = Movable::counter.loadAcquire();
|
||||
{
|
||||
QVector<Movable> vec;
|
||||
vec.reserve(5);
|
||||
vec.reserve(7);
|
||||
Movable m0;
|
||||
Movable m1;
|
||||
Movable m2;
|
||||
Movable m3;
|
||||
Movable m4;
|
||||
Movable m5;
|
||||
Movable m6;
|
||||
|
||||
vec.append(std::move(m3));
|
||||
QVERIFY(m3.wasConstructedAt(nullptr));
|
||||
@ -2920,6 +2922,21 @@ void tst_QVector::insertMove() const
|
||||
QVERIFY(vec.at(1).wasConstructedAt(&m2));
|
||||
QVERIFY(vec.at(2).wasConstructedAt(&m3));
|
||||
QVERIFY(vec.at(3).wasConstructedAt(&m4));
|
||||
vec += std::move(m5);
|
||||
QVERIFY(m5.wasConstructedAt(nullptr));
|
||||
QVERIFY(vec.at(0).wasConstructedAt(&m1));
|
||||
QVERIFY(vec.at(1).wasConstructedAt(&m2));
|
||||
QVERIFY(vec.at(2).wasConstructedAt(&m3));
|
||||
QVERIFY(vec.at(3).wasConstructedAt(&m4));
|
||||
QVERIFY(vec.at(4).wasConstructedAt(&m5));
|
||||
vec << std::move(m6);
|
||||
QVERIFY(m6.wasConstructedAt(nullptr));
|
||||
QVERIFY(vec.at(0).wasConstructedAt(&m1));
|
||||
QVERIFY(vec.at(1).wasConstructedAt(&m2));
|
||||
QVERIFY(vec.at(2).wasConstructedAt(&m3));
|
||||
QVERIFY(vec.at(3).wasConstructedAt(&m4));
|
||||
QVERIFY(vec.at(4).wasConstructedAt(&m5));
|
||||
QVERIFY(vec.at(5).wasConstructedAt(&m6));
|
||||
vec.push_front(std::move(m0));
|
||||
QVERIFY(m0.wasConstructedAt(nullptr));
|
||||
QVERIFY(vec.at(0).wasConstructedAt(&m0));
|
||||
@ -2927,8 +2944,10 @@ void tst_QVector::insertMove() const
|
||||
QVERIFY(vec.at(2).wasConstructedAt(&m2));
|
||||
QVERIFY(vec.at(3).wasConstructedAt(&m3));
|
||||
QVERIFY(vec.at(4).wasConstructedAt(&m4));
|
||||
QVERIFY(vec.at(5).wasConstructedAt(&m5));
|
||||
QVERIFY(vec.at(6).wasConstructedAt(&m6));
|
||||
|
||||
QCOMPARE(Movable::counter.loadAcquire(), instancesCount + 10);
|
||||
QCOMPARE(Movable::counter.loadAcquire(), instancesCount + 14);
|
||||
}
|
||||
QCOMPARE(Movable::counter.loadAcquire(), instancesCount);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user