Exemplos de quando um swap bitwise () é uma má idéia?

Você não deve tratar os ponteiros de objeto como ponteiros para dados binários brutos em linguagens OOP, incluindo C ++. Objetos são "mais do que" sua representação.

Então, por exemplo,swapdois objetos trocando seus bytes está incorreto:

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));
}

A única situação, no entanto, em que eu posso imaginar este atalho causando umproblema é quando um objeto contém um ponteiro para si mesmo, o qual eu raramente (nunca?) vi na prática; pode haver também outros cenários.

Quais são alguns exemplos reais (do mundo real) de quando umswap iria quebrar se você realizou uma troca bit a bit?
Eu posso facilmente criar exemplos planejados com auto-ponteiros, mas não consigo pensar em nenhum mundo real.

questionAnswers(5)

yourAnswerToTheQuestion