Erik Trulsson wrote:
I think 6.2.5 clause 27 is very relevant for this. It says that 'pointer to
int' and 'pointer to union' do not need to have the same representation as
each other. It also seems that 'pointer to int' and 'pointer to unsigned
int' do not need to have the same representation requirements (at least I
cannot find anything that says that signed and unsigned variants are
compatible types.) (Which I must admit comes as a bit of a surprise to me.)
So, yes, that example does technically seem to be undefined (but I don't
know of any real-world implementation where it would not work as expected.)
undefined = undefined
The notion of "work as expected" is a dangerous one, not to be
encouraged at all.