void scalar_product(
std::vector<int> const& v,
int c,
vector<int>& result) {
result.clear();
result.reserve(v.size());
for (auto val : v)
result.push_back(val * c);
}
class Base {...};
class Derived : Base {
...
std::unique_ptr<Foo> member_;
Bar* barmember_;
};
Derived::Derived(Derived&& rhs)
: Base(std::move(rhs)),
member_(std::move(rhs.member_)),
barmember_(nullptr) {
std::swap(this->barmember_, rhs.barmember_);
}
vs
void Derived::operator=(Derived&& rhs) {
Base::operator=(std::move(rhs));
delete(this->barmember_);
this->barmember_ = rhs.barmember_;
rhs.barmember_ = nullptr;
}
The latter is better if a member contains a million-character string or a million-entry table.