Можно ли реализовать связанный список XOR в C ++, не вызывая неопределенного поведения?

XOR связанный список является модифицированной версией обычного двусвязного списка, в котором каждый узел хранит только один «указатель» вместо двух. Этот «указатель» состоит из XOR следующего и предыдущего указателей. Чтобы просмотреть список, необходимы два указателя - один на текущий узел и один на следующий или предыдущий узел. Чтобы перейти вперед, адрес предыдущего узла XORed с «указателем», сохраненным в текущем узле, показывая истинный «следующий» указатель.

Стандарт C ++ приводит к тому, что куча операций с указателями и целыми числами приводит к неопределенному поведению - например, вы не можете гарантировать, что установка определенного бита в числе не вызовет прерывание аппаратным обеспечением, поэтому в некоторых случаях результаты бита твидлинг может быть неопределенным.

Мой вопрос заключается в следующем: существует ли реализация C ++ связанного списка XOR, которая не приводит к неопределенному поведению?

Ответы на вопрос(1)

Ваш ответ на вопрос