Здравствуйте, Centaur, Вы писали:
C>Прежде чем «просто сравнивать», нужно определиться с понятием равенства.
Мне скорее нужно неравество. Реальная ситуация такая, есть два объекта одного юниона, то есть тип юниона одинаковый, но в юнионе много указателей. Какой из них активен — неизвестно. Надо просто выяснить один и тот же указатель записан в обоих объектах или нет.
Pavel Dvorkin предложил отличное решение, не использовать union вообще. Пожалуй я так и поступлю (хотя код не мой), но хотелось бы до конца разобраться.
Я знал, что записывать одно, а извлекать другое из юниона нельзя. Вы все это подтвердили. Так же опровергли моей предположение о том, что есть исключение с void*. Теперь для полного просветления мне не хватает ответа на один вопрос: Что если в юнионе лежат все указатели одного типа? Например все типа void*. В этом случае сравнивать разные элементы таких юнионов тоже нельзя?