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