Czy należy przeciążać swap w przestrzeni nazw std?
Czytam dziś coś interesującego, w którym powiedziano, że „standardowy” sposób zamieniania wywołań na typ użytkownika (podany jako argument szablonu) to ...
using std::swap;
swap(something, soemthingelse);
Powodem tego jest użycie zależnego od argumentu wyszukiwania, aby użyć aswap
funkcja w przestrzeni nazw użytkownika lubswap
wstd
przestrzeń nazw. To wywołało dla mnie interesujące pytanie. Kiedy przeciążamstd::swap
dla jednej z moich klas faktycznie zdefiniowałem to wstd
przestrzeń nazw ...namespace std { void swap(/*...*/){/*...*/} }
. Czy to praktykaźle? Czy powinienem zdefiniować swój własnyswap
sstd
lub moja własna przestrzeń nazw (i dlaczego)?