This causes the other special members (like move and copy construction,
and move assignment) to come through for free. Some code in clang was
depending on the (deprecated, in the original code) copy ctor. Now that
there's no user-defined special members, they're all available without
any deprecation concerns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244835
91177308-0d34-0410-b5e6-
96231b3b80d8
}
};
- PackedVector() { }
+ PackedVector() = default;
explicit PackedVector(unsigned size) : Bits(size << (BitNum-1)) { }
bool empty() const { return Bits.empty(); }
return Bits != RHS.Bits;
}
- const PackedVector &operator=(const PackedVector &RHS) {
- Bits = RHS.Bits;
- return *this;
- }
-
PackedVector &operator|=(const PackedVector &RHS) {
Bits |= RHS.Bits;
return *this;
}
-
- void swap(PackedVector &RHS) {
- Bits.swap(RHS.Bits);
- }
};
// Leave BitNum=0 undefined.
EXPECT_FALSE(Vec == Vec2);
EXPECT_TRUE(Vec != Vec2);
- Vec2.swap(Vec);
- EXPECT_EQ(3U, Vec.size());
- EXPECT_FALSE(Vec.empty());
- EXPECT_EQ(0U, Vec[0]);
- EXPECT_EQ(0U, Vec[1]);
- EXPECT_EQ(0U, Vec[2]);
-
- EXPECT_EQ(2U, Vec2[0]);
- EXPECT_EQ(0U, Vec2[1]);
- EXPECT_EQ(1U, Vec2[2]);
- EXPECT_EQ(3U, Vec2[3]);
-
Vec = Vec2;
EXPECT_TRUE(Vec == Vec2);
EXPECT_FALSE(Vec != Vec2);