Czy lista połączona XOR może być zaimplementowana w C ++ bez powodowania niezdefiniowanego zachowania?

NaLista powiązana XOR jest zmodyfikowaną wersją zwykłej podwójnie połączonej listy, w której każdy węzeł przechowuje tylko jeden „wskaźnik” zamiast dwóch. Ten „wskaźnik” składa się z XOR następnego i poprzedniego wskaźnika. Aby przejść przez listę, potrzebne są dwa wskaźniki - jeden do bieżącego węzła i jeden do następnego lub poprzedniego węzła. Aby przejść do przodu, adres poprzedniego węzła jest XOR z „wskaźnikiem” przechowywanym w bieżącym węźle, ujawniając prawdziwy „następny” wskaźnik.

Standard C ++ powoduje, że wiele operacji na wskaźnikach i liczbach całkowitych powoduje niezdefiniowane zachowanie - na przykład nie można zagwarantować, że ustawienie określonego bitu w liczbie nie spowoduje, że sprzęt wywoła przerwanie, więc w niektórych przypadkach wyniki bitów skręcanie może być niezdefiniowane.

Moje pytanie brzmi: czy istnieje implementacja C ++ listy połączonej XOR, która nie powoduje niezdefiniowanego zachowania?

questionAnswers(1)

yourAnswerToTheQuestion