I read something interesting today that said the \'standard\' way to call swap on a user provided type (provided as a template argument) is...
using std::swa
I believe this is the answer you're looking for, and the entire set of answers to that question explain all. Howard Hinnant and Dave Abrahams have been on the C++ standards committee for more than a decade I think.