Boost logo

Boost :

Subject: Re: [boost] Proposed new RAII Library
From: Lorenzo Caminiti (lorcaminiti_at_[hidden])
Date: 2012-09-14 18:28:12


On Fri, Sep 14, 2012 at 1:08 PM, Vicente J. Botet Escriba
<vicente.botet_at_[hidden]> wrote:
> So resuming, the boost::scope_guard (without a dismiss state) is a
> convenient abstraction for c++11 compilers supporting lambdas, and
> Boost.ScopeExit reflects the same abstraction for C++03.
>
> I will be for an extension of Boost.ScopeExit that provides a non-macro
> interface, like the one of the preceding scope_guard, for the people that
> don't need to make their code portable to non c++11 compilers. I will name
> it however scoped_exit.
>
> Extracted from the Boost.ScopeExit
>
>
> struct scope_exit {
> scope_exit(std::function<void (void)> f) : f_(f) {}
> ~scope_exit(void) { f_(); }
> private:
> std::function<void (void)> f_;
> };

void world::add_person(person const& a_person) {
     bool commit = false;

    persons_.push_back(a_person);
    scope_exit on_exit1([&commit, this](void) { // Use C++11 lambda.
        if(!commit) persons_.pop_back(); // `persons_` via captured `this`.
    });

    // ...

    commit = true;
}

Sure if there's enough interest I can move this scope_exit class from
the examples into the Scope Exit lib itself when #ifndef
BOOST_NO_LAMBDAS.

My _personal_ opinion is that such a boost::scope_exit class is so
trivial that programmers can just program it themselves, but that's
just my opinion and I'm happy to add such a feature (or better to move
it into the lib from the examples) if Boosters want it. No review
should be needed, I can just post the (trivial) changes on this ML and
confirm them with Alexander Nasonov.

Thanks.
--Lorenzo


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk