¿Ejemplos de cuándo un intercambio de bits () es una mala idea?

Se supone que no debe tratar los punteros de objetos como punteros a datos binarios sin procesar en lenguajes OOP, incluido C ++. Los objetos son "más que" su representación.

Así por ejemplo,swapIngresar dos objetos intercambiando sus bytes es incorrecto:

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

La única situación, sin embargo, en la que puedo imaginar este atajo causando unproblema es cuando un objeto contiene un puntero a sí mismo, que raramente (¿nunca?) he visto en la práctica; Sin embargo, también puede haber otros escenarios.

¿Cuáles son algunos ejemplos reales (en el mundo real) de cuándo un correctoswap ¿Se rompería si realizas un cambio de bit a bit?
Fácilmente se me ocurren ejemplos ideados con autoapuntos, pero no puedo pensar en los del mundo real.

Respuestas a la pregunta(5)

Su respuesta a la pregunta