![]() |
Boost : |
From: Joaquin M López Muñoz (joaquinlopezmunoz_at_[hidden])
Date: 2025-05-22 16:51:54
El 22/05/2025 a las 14:06, Andrzej Krzemienski via Boost escribió:
> niedz., 18 maj 2025 o 13:29 Andrzej Krzemienski <akrzemi1_at_[hidden]>
> napisaÅ(a):
>
> [...]
>
> A note about exception safety. Using the definitions from David Abrahams,
> "basic exception safety" should be provided for every function. I cannot
> see any note about the exception safety of this library. Usually when I
> find a new library on the web, I assume that the author is not aware of the
> problems of "exception safety", and I do not trust them until I am
> convinced otherwise. I am pretty sure Boost.Bloom takes this into account,
> but I could not find anything in the docs on this matter.
Yes, exception safety has been taken into account and basic (at least)
safety is provided
everywhere. I will add this to the reference. Would it be ok to state
that basic is provided
by default and then explicitly document those functions providing strong
(noexcept is
not necessary as the signature tells it)?
> Additionally, for the copy assignment of the class filter: the docs do not
> say what happens when the allocator throws. Note that allocators may throw
> even if we have not run out of memory: do you provide the strong ("commit
> or rollback") guarantee? Or just the basic one? The same for reset().
Strong safety is provided, which, when combined with
propagate_on_container_copy_assignment traits, results in a rather
convoluted
implementation:
https://github.com/joaquintides/bloom/blob/develop/include/boost/bloom/detail/core.hpp#L269-L297
reset() also provides strong safety.
Joaquin M Lopez Munoz
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk