Boost logo

Boost :

Subject: Re: [boost] [type traits] Strange behaviour of comparison operators with pointers
From: Edward Diener (eldiener_at_[hidden])
Date: 2011-06-18 07:48:29


On 6/18/2011 6:23 AM, Frédéric Bron wrote:
> The following code gives a compile time error (g++ and msvc):
> int const lhs=1;
> int* rhs=0;
> lhs == rhs;

Expected.

> But the following code gives no error:
> int const lhs=0;
> int* rhs=0;
> lhs == rhs;
> because a const int with 0 value is a valid null pointer!

Or you could say:

0 == rhs

which is valid.

>
> Then there is no way to predict if it is possible to compare lhs and
> rhs based only on their types.

Why do you write this ? Just because 0 can be an integer or a null
pointer in C++ does not mean the above.

> The general rule is that it is not
> possible so that this is what I propose to use for the type trait
> extension detecting the possibility to call comparison operators on
> given types.

To what does "this" refer in your previous sentence ?


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk