Use boost::adl_move_swap instead of custom swap or std::swap for performance and compatibility reasons.