Boost logo

Boost :

Subject: Re: [boost] Proposed new RAII Library
From: Lorenzo Caminiti (lorcaminiti_at_[hidden])
Date: 2012-09-15 13:55:46

On Sat, Sep 15, 2012 at 6:26 AM, Sohail Somani <sohail_at_[hidden]> wrote:
> On 15/09/2012 2:16 AM, Lorenzo Caminiti wrote:
>>> >Lorenzo, thanks for volunteering but the design and implementation is
>>> > far
>>> >more complex than the extract from the doc. If we want it to be
>>> > efficient,
>>> >it shouldn't use boost.function,
>>> > boost/multi_index/detail/scope_guard.hpp
>>> >should be a good staring point.
>> I see. Then (speaking personally) it might make sense for it to exist
>> in a lib as its impl is not trivial due to the optimization efforts.
>> However, I probably won't have time to add this feature to Scope
>> Exit...
> Ahhhh!
> The needed class is already part of scope exit.

What's there as boost::scope_exit::aux::guard is similar to what shown
in the examples as scope_exit but it uses the operator= and it has a
default constructor instead of using the constructor to initialize the
functor. It is used to implement the Scope Exit macros using C++11
lambdas but only if !BOOST_NO_LAMBDA and

> Just add a dismiss function,

I wouldn't add the dismiss functionality. That is not always needed
with RAII and the Scope Exit API is more generic without it. If users
need such functionality, they can use a commit/dismiss variable
external to Scope Exit to simply implement it:

    struct scope_exit {
        scope_exit(std::function<void (void)> f) : f_(f) {}
        ~scope_exit(void) { f_(); }
        std::function<void (void)> f_;

    bool commit = false;

    scope_exit on_exit1([&commit, this]() {
        if(!commit) persons_.pop_back();

> take it out of aux/detail and I WILL BE YOUR UNCLE, forget about Bob.
> Forget the optimization. Boost Scope.Exit doesn't use any of these tricks
> right? It's already using a boost function.
> Lorenzo my man, just add it.

As I said I could but only if it's about adding something as simple as
the above scope_exit... I'm not sure if that's enough.


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