Boost logo

Boost :

Subject: Re: [boost] [shared_ptr] Why operator< uses internal_less?
From: Peter Dimov (pdimov_at_[hidden])
Date: 2008-10-09 20:50:54

Frank Mori Hess:

> On Thursday 09 October 2008 11:32 am, Sebastian Redl wrote:
>> dariomt_at_[hidden] wrote:
>> > I see that operator== and operator!= are implemented comparing the
>> > pointer inside the shared_ptr's using get(), but operator< uses
>> > _internal_less, that does a different thing.
>> >
>> > I thought that operator< would also be implemented using get(), so
>> > please, can you share the rationale behind the need for _internal_less?
>> get() returns px (the raw pointer), _internal_less compares pn (the
>> shared_count).
>> This is peculiar, since it means that alias pointers to different
>> subobjects would compare non-equal, but sort equivalent. I'd like to
>> know the rationale of this, too.
> There is a rationale in n1590.

Which is

At the last meeting, the committee accepted Herve Broenimann's proposal

to change std::shared_ptr's operator< to compare get(). I don't particularly
like the specifics of that paper, but we'll probably need to change
boost::shared_ptr (and weak_ptr) to match.

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