Also probably excusable because 2010, but from that same part of the article:
void swap(int& x, int& y);
void swap(float& x, float& y) {
swap((int&)x, (int&)y);
}
This is UB and may explode. Probably the only portable way to do it is a memcpy() [1].