Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2007-12-11 11:00:11

on Fri Dec 07 2007, Ion Gaztañaga <> 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
>> "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
>> throw?
> 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

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