¿Se puede implementar una lista enlazada XOR en C ++ sin causar un comportamiento indefinido?

UnLista enlazada XOR es una versión modificada de una lista normal con doble enlace en la que cada nodo almacena solo un "puntero" en lugar de dos. Ese "puntero" está compuesto por el XOR de los punteros siguientes y anteriores. Para recorrer la lista, se necesitan dos punteros: uno al nodo actual y otro al nodo siguiente o anterior. Para avanzar, la dirección del nodo anterior está XORed con el "puntero" almacenado en el nodo actual, revelando el verdadero "siguiente" puntero.

El estándar C ++ hace que muchas operaciones en los punteros y enteros resulten en un comportamiento indefinido; por ejemplo, no puede garantizar que establecer un bit en particular en un número no hará que el hardware active una interrupción, por lo que en algunos casos los resultados del bit El twiddling puede ser indefinido.

Mi pregunta es la siguiente: ¿existe una implementación en C ++ de una lista vinculada XOR que no dé como resultado un comportamiento indefinido?

Respuestas a la pregunta(1)

Su respuesta a la pregunta