Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2005-10-09 19:32:03

Thorsten Ottosen <nesotto_at_[hidden]> writes:

>> ptr_map<>::insert(key, value) function is taking first argument by non-const
>> reference. Is it missing 'const' there?
> No, its an exception-safety issue. if evaluating the first expression could
> throw, we could leak.

Could you please explain what you're saying? On the surface, that
sounds like a flawed rationale on many levels. The arguments to a
function can be evaluated in any order -- they can even be
interleaved. Taking a parameter by non-const reference does nothing
to prevent the corresponding expression from throwing. Is this
another example of false user protection?

Dave Abrahams
Boost Consulting

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