operator= using std::swap §