aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--lexlib/CharacterSet.h35
1 files changed, 21 insertions, 14 deletions
diff --git a/lexlib/CharacterSet.h b/lexlib/CharacterSet.h
index 0470e446c..f71dbc964 100644
--- a/lexlib/CharacterSet.h
+++ b/lexlib/CharacterSet.h
@@ -46,7 +46,27 @@ public:
bset[i] = other.bset[i];
}
}
- CharacterSet &operator=(CharacterSet &&other) {
+ CharacterSet(CharacterSet &&other) noexcept {
+ size = other.size;
+ valueAfter = other.valueAfter;
+ bset = other.bset;
+ other.size = 0;
+ other.bset = nullptr;
+ }
+ CharacterSet &operator=(const CharacterSet &other) {
+ if (this != &other) {
+ bool *bsetNew = new bool[other.size];
+ for (int i = 0; i < other.size; i++) {
+ bsetNew[i] = other.bset[i];
+ }
+ delete[]bset;
+ size = other.size;
+ valueAfter = other.valueAfter;
+ bset = bsetNew;
+ }
+ return *this;
+ }
+ CharacterSet &operator=(CharacterSet &&other) noexcept {
if (this != &other) {
delete []bset;
size = other.size;
@@ -62,19 +82,6 @@ public:
bset = nullptr;
size = 0;
}
- CharacterSet &operator=(const CharacterSet &other) {
- if (this != &other) {
- bool *bsetNew = new bool[other.size];
- for (int i=0; i < other.size; i++) {
- bsetNew[i] = other.bset[i];
- }
- delete []bset;
- size = other.size;
- valueAfter = other.valueAfter;
- bset = bsetNew;
- }
- return *this;
- }
void Add(int val) {
assert(val >= 0);
assert(val < size);