Subject: Re: [boost] [local] Review
From: Lorenzo Caminiti (lorcaminiti_at_[hidden])
Date: 2011-11-18 22:44:02
On Fri, Nov 18, 2011 at 10:19 PM, Joel de Guzman
> On 11/19/2011 6:44 AM, Lorenzo Caminiti wrote:
>>> As boost is trying to not only push the boundaries of C++ it should also try
>>> > to set examples of best C++ practice. I would not consider Macro calls to
>>> > interface with a library not good practice.
>> I understand. I disagree but I understand your point. I disagree
>> because the use of macros in this context saves the user from writing
>> verbose boiler-plate code.
>> IMO, it is similar to Boost.ScopeExit: Instead of providing the
>> SCOPE_EXIT macros we could have said that the user writes the code to
>> bind the variables deducing their types and it programs the local
>> class with the exit code in the desstructor all of that by hand.
>> However, using macros saves the user to write all of that and as I
>> user I personally appreciate that. It is true that there is a trade
>> off between the readability cost of using macros and the benefit of
>> not having to write boiler-plate code. I find that trade off
>> acceptable for libraries like Boost.SopeExit or even ForEach and (of
>> course ;) ) also for my library so I don't have to write the
>> boiler-plate code for the binding and the casting to pass the local
>> class as a template parameter.
> I share Thomas' sentiment. But IMO, it's really not about using macros.
> it's about the syntax. Boost.Foreach looks exactly like a for loop.
> The proposed boost locals syntax is arcane. IMO, bottomline: it's
> about the design of the DSEL regardless how it is implemented. And,
> the syntax proposed is, well, utterly ugly. Anything more complex than
> foreach, done using the PP will be a mess. An ugly syntax can be acceptable
That is fine but the definition of "ugly" is subjective so IMO it
should be left up to the reviewers (and Thomas' point is clear, the
syntax is ugly for him as one of the reviewers).
> IFF there is no other way to do it. In this case (locals), there are
> better ways of doing the same thing.
But there is no other way to do locals allowing to use statement
syntax for the function definition.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk