diff options
-rw-r--r-- | lexlib/CharacterSet.h | 35 |
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); |