Если вы перегружаете swap в пространстве имен std?

Сегодня я прочитал кое-что интересное, в котором говорится, что «стандартный» способ вызова swap для пользовательского типа (предоставленного в качестве аргумента шаблона) - это ...

using std::swap;
swap(something, soemthingelse);

Причиной этого является использование зависимого от аргумента поиска, чтобы использоватьswap функция в пространстве имен пользователя илиswap вstd Пространство имен. Это подняло интересный вопрос для меня. Когда я перегружаюstd::swap для одного из моих классов я на самом деле определял его вstd Пространство имен ...namespace std { void swap(/*...*/){/*...*/} }, Это практиканеправильно? Должен ли я определить свой собственныйswapвstd или мое собственное пространство имен (и почему)?