From: David Abrahams (dave_at_[hidden])
Date: 2007-12-11 11:00:11
on Fri Dec 07 2007, Ion GaztaÃ±aga <igaztanaga-AT-gmail.com> wrote:
> Thorsten Ottosen wrote:
>> I vote to accept this library. The documentation is very nice.
> Thanks for the vote.
>> One thing puzzled me though:
>> (see http://igaztanaga.drivehq.com/unordered/unordered/comparison.html)
>> "The containers hash or predicate function can throw exceptions from erase"
>> Under what cicumstances can/should/would I construct a ahsh or predicate
>> that throws? I mean, the hash computes an integer, and comparisons reads
>> data to determine its answer.
>> This migth be what the standard requires, but it certainly seems
>> non-intuitive. Why not just require that neither hash nor predicates can
> The same could be said about Predicate for ordered containers like
> std::set/map. I haven't seen a practical case where the comparison could
> throw. But standard library experts should answer this better than me.
> Certainly, Daniel has tried to achieve strong exception guarantees and
> the implementation becomes quite complicated if comparison/hash throws.
> Double buffering and other tricks are needed. I think this is a very
> good question both for boosters and people from the LWG.
When specifying requirements in the standard, we (the LWG) don't like
to constrain implementations or users if possible. I don't see any
reason to forbid a throwing comparison or hash.
-- Dave Abrahams Boost Consulting http://www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk