|
Boost : |
From: John Max Skaller (skaller_at_[hidden])
Date: 2001-05-27 09:57:24
David Abrahams wrote:
>
> ----- Original Message -----
> From: "Darin Adler" <darin_at_[hidden]>
>
> > not standard-conforming. But I now see that 17.3.4.1p1 specifically says
> > that the specialization must "meet the standard library requirements for
> > the original template", and that in the case of std::less, that means it
> > must have the same result as using the < operator directly.
> On first sight I'd say Peter may have uncovered a defect in the standard. I
> don't think we meant to say that about std::less<>.
The intended requirement is that, where < is defined
by the Standard, it must agree with less<>. In particular,
if two pointers a,b point into the same array, then
assert(a < b == less(a,b))
On the other hand, the result of a<b isn't well defined
otherwise, so the above assertion need not be the case.
less<> was introduced _solely_ to provide
a total ordering on pointers, since < cannot be
relied upon to provide one. It is necessary
to create STL sets (etc) of pointers.
-- John (Max) Skaller, mailto:skaller_at_[hidden] 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk