Do you have a problem with std::swap ?