----Original Message----
>From: Daniel Jacobowitz
>Sent: 14 September 2005 02:27
> On Tue, Sep 13, 2005 at 11:22:18AM +0100, chris jefferson wrote:
>> I realise that according to the C++ standard it isn't legal to compare
>> two pointers which are not from the same array. Is anyone aware of
>> anything in g++ which would actually forbid this, and if there is any
>> way of checking if will be valid?
> If two pointers to a T* are in the same array, their difference [in
> bytes] must be 0 modulo sizeof(T). If they aren't, and sizeof(T) >
> alignof(T), then it doesn't have to be. I'm pretty sure GCC can
> optimize based on this information.
>
> This bit binutils, in the form of a crash in a hash function on
> Solaris. I think that was pointer subtraction, rather than comparison,
> however.
Wow! :) I nominate this for post of the year.
I have archived it, and next time someone who _thinks_ they're being
clever by playing games behind the compiler's back tries to argue that
"pointers are all just numbers like ints" and "what could ever _actually_ go
wrong in practice", I'm going to pull it out, print it out on the side of a
concrete breeze block, and wack 'em upside the haid with it.
Hey, you didn't even have to invoke ones-complement or segmented
architectures to get the nasal demons flying here. Thanks for such an
invaluable piece of ammunition!
cheers,
DaveK
--
Can't think of a witty .sigline today....