Boost logo

Boost :

Subject: Re: [boost] [Boost.Pool] TR1?
From: Phil Bouchard (philippe_at_[hidden])
Date: 2011-04-13 17:17:15

On 4/13/2011 12:49 PM, Nevin Liber wrote:
> x< y has a specified order for pointers pointing within the same array or
> object, but is undefined for pointers not pointing in the same array or
> object.
> std::less guarantees a total ordering for all pointers, but does not specify
> what that ordering is, even for pointers pointing within the same array or
> object (as the pointer specialization is not required to use x< y to do any
> comparisons).
> To make is_from work, we need a total, *specified* ordering for all
> pointers. I see no way to combine the above two to get a total specified
> ordering.

There is s bug in the standards because according to 5.2.10/4 a pointer
can be converted to an integral type to later be ordered. i.e.:

struct Silly
    bool is_from(const char* p)
       return !std::less<long>()(reinterpret_cast<long>(p),
reinterpret_cast<long>(buffer)) &&
reinterpret_cast<long>(buffer + sizeof(buffer)));

    char buffer[1024];


Boost list run by bdawes at, gregod at, cpdaniel at, john at