From 834c5671ca91a6fa80c945fa2fe0d750b6cc7dff Mon Sep 17 00:00:00 2001 From: Neil Date: Thu, 16 Jul 2020 19:53:21 +1000 Subject: Backport: Add move constructor to complete set of standard methods. Backport of changeset 8415:74ff9a221c89. --- lexlib/CharacterSet.h | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'lexlib/CharacterSet.h') 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); -- cgit v1.2.3