telemetry: Default copy/move constructors and assignment operators

This provides the equivalent behavior, but without as much boilerplate.
While we're at it, explicitly default the move constructor, since we
have a move-assignment operator defined.
This commit is contained in:
Lioncash 2018-07-18 16:15:27 -04:00
parent 7f1303a834
commit faa62b0d1e

View file

@ -58,21 +58,11 @@ public:
Field(FieldType type, std::string name, T&& value) Field(FieldType type, std::string name, T&& value)
: name(std::move(name)), type(type), value(std::move(value)) {} : name(std::move(name)), type(type), value(std::move(value)) {}
Field(const Field& other) : Field(other.type, other.name, other.value) {} Field(const Field& other) = default;
Field& operator=(const Field& other) = default;
Field& operator=(const Field& other) { Field(Field&&) = default;
type = other.type; Field& operator=(Field&& other) = default;
name = other.name;
value = other.value;
return *this;
}
Field& operator=(Field&& other) {
type = other.type;
name = std::move(other.name);
value = std::move(other.value);
return *this;
}
void Accept(VisitorInterface& visitor) const override; void Accept(VisitorInterface& visitor) const override;