Isn't this the same as the std::swap version you removed?