Przykłady, kiedy bitowa zamiana () jest złym pomysłem?

Nie należy traktować wskaźników obiektów jako wskaźników do surowych danych binarnych w językach OOP, w tym C ++. Obiekty są „więcej niż” ich reprezentacją.

Na przykładswapdwa obiekty przez zamianę ich bajtów są nieprawidłowe:

template<class T>
void bad_swap(T &a, T &b)  // Assuming T is the most-derived type of the object
{
    char temp[sizeof(T)];
    memcpy(temp, &a, sizeof(a));
    memcpy(&a, &b, sizeof(b));
    memcpy(&b, temp, sizeof(temp));
}

Jedyna sytuacja, w której mogę sobie wyobrazić ten skrót powodujący aproblem&nbsp;jest wtedy, gdy obiekt zawiera wskaźnik do siebie, który rzadko (nigdy?) widzę w praktyce; mogą jednak istnieć inne scenariusze.

Jakie są rzeczywiste przykłady poprawnościswap&nbsp;zepsułoby się, gdybyś przeprowadził bitową zamianę?
Mogę łatwo wymyślić wymyślne przykłady z własnymi wskaźnikami, ale nie potrafię wymyślić żadnych rzeczywistych.