$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] RangeEx review
From: Mathias Gaunard (mathias.gaunard_at_[hidden])
Date: 2009-03-01 11:24:36
Phil Endecott wrote:
> Mathias Gaunard wrote:
>> Actually, I believe sort(c) calls c.sort() if it exists.
>> So it's not just std::sort.
>
> I don't see any evidence of that in boost/range/algorithm/sort.hpp.
> Where should I be looking? This would of course be a useful feature,
> and documenting whether it is or is not done would be useful.
It is done by the range_ex version in the sandbox.
Maybe it has been dropped then, a rationale for that would be nice.
>>> My point is that std::unique only has its "move duplicates to the
>>> end" behaviour because the conventional interface with a pair of
>>> iterators doesn't let you change the size of the container. Now that
>>> we have a unique() that takes a container we don't need that
>>> restriction.
>>
>> Not a container, a range.
>
> The fact that the container that I pass is converted to a range can be
> considered as an implementation detail for many applications of this
> library.
So you would want unique to have different semantics whether the passed
range is a container or not?
It would probably be best to have "unique" have the same semantics as
std::unique and "unique_inplace" have the semantics you want.
Also, for a container such as vector, should unique_inplace actually
move the elements to remove to the end before erasing them, since that
should be more efficient, or should it erase duplicates as they are found?