Subject: Re: [boost] Review of Local Exits
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2011-11-19 18:39:01
Le 19/11/11 23:08, Lorenzo Caminiti a écrit :
> On Sat, Nov 19, 2011 at 3:59 PM, Alexander Nasonov<alnsn_at_[hidden]> wrote:
>> This is not a full review of the proposed Boost.Local library, I've
>> reviewed only Local Exits and a potential merge with Boost.ScopeExit.
> Hello Alex and thank you very much for your comments.
>> I vote NOT to merge Local Exits with Boost.ScopeExit for the following
> I have no problem with local exits and scope exits remaining separate.
> Local exits will additionally provide no bindings (void), const
> bindings, and binding of this_.
>> - Local Exits feature gives two different interfaces ("variadic" and
>> "sequencing"). In my opinion, it should only document C++0X
>> interface and have a section called something like "What if I don't
>> have a C++0X compliant compiler?" where it will explain an
> Yes, the same comment was made by Vicente and Thomas for the entire
> Boost.Local. I am happy to just document the variadic syntax and have
> an Annex with the sequencing syntax.
>> alternative interface for a transitional period.
>> Some compilers already support enough C++0X features to let you
>> develop a "perfect" interface.
>> - Binding of variables should be modeled after lambda captures. This
>> means no this_ and no void. I really like void and I'd added it if
>> Lorenzo came up with the idea at the time when Boost.ScopeExit was
>> still in development.
> FYI, I can write pp code that transforms void, this_, etc into lambda
> captures. For example:
> TO_CAPTURE(void) // expand to 
> TO_CAPTURE(this_,&x) // expand to [this,&x]
> TO_CAPTURE( (this_) (&x) ) // expand to [this,&x]
> This way SCOPE_EXIT(void) and SCOPE_EXIT( (this_) (&x) ) or even
> SCOPE_EXIT(this_,&x) could support void and this_ while still working
> on both C++03 and C++11...
>> - For the same reason, const bind& and bind& should be removed from
>> the interface.
> Well, if local exits are not merged with scope exits, local exits can
> keep const bind&, bind&, this_, void, etc.
I wouldn't want two libraries providing Scope Exit idiom in Boost with
only a minor binding difference, this will be confusing. I don't know if
you have explained this in the document , but could you try to explain
here (or point where in the documentation) what are the clear advantages
of capturing void, this or capturing by const&.
Alex, could you explain why (a part form following the lambda capture),
you don't want to accept these new bindings in ScopedExit?
Boost list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk