Pull Request №691 RosettaCommons/rosetta/main ← lyskov-ai/rosetta/refactor/key-containers-rule-of-zero
Merge: b8e64ecdc0338b77c231760f7f9bdcd4d500a240←9ee8c4c268c7bf060c2b014c3c94d2fca90685c5
Apply Rule of Zero to utility/keys container family
----------------
Merge commit message:
Apply Rule of Zero to utility/keys container family
ClassKeyMap, ClassKeyVector, KeyVector, SmallKeyMap, and SmallKeyVector each
held standard-container value-type members only (Vector, IndexMap, plus a
scalar Index in the Small variants). Their user-declared destructors
(empty body or = default), copy constructors, and copy-assignment operators
were all byte-for-byte equivalent to the implicit defaults that the compiler
would synthesize, so they were redundant.
Removing them lets the implicitly defaulted special-member-functions take
over and, as a side effect, restores the implicit move constructor and move
assignment that were previously suppressed by the user-declared copy
operations. The explicit default constructors on SmallKeyMap and
SmallKeyVector are kept because they value-initialize the scalar Index u_,
which an implicit default would leave indeterminate.