|
Boost : |
Subject: Re: [boost] Review of Local Exits
From: Lorenzo Caminiti (lorcaminiti_at_[hidden])
Date: 2011-11-19 17:08:20
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
> reasons:
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.
Thank you for your comments.
--Lorenzo
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk