$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] Boost.Algorithm design question
From: Stephan T. Lavavej (stl_at_[hidden])
Date: 2011-10-06 19:00:28
[Phil Endecott]
> But in any case, it's not hard to write; just require that T is a type
> for which *i==value is valid.
>
> What am I missing?
[Dave Abrahams]
> You're missing that == should *mean* something.
Why should the algorithm assume any more meaning than it has to?
For example, std::equal() does not require symmetry. This is just fine for people comparing a range of T to a range of T, where T == T is symmetric, and makes people comparing a range of X to a range of Y, where X == Y is provided and Y == X has not even been implemented (and X can't be converted to/from Y), super happy.
> You're not even requiring it to be symmetric.
> Why is it right to test *i==value instead of value==*i?
The algorithm takes (first, last, value), putting the range on the left and the value on the right.
STL