"Fernando Cacciola" <[EMAIL PROTECTED]> writes:

> "Aleksey Gurtovoy" <[EMAIL PROTECTED]> escribió en el mensaje
> news:[EMAIL PROTECTED]
>> David Abrahams wrote:
>> > Here's an example I just cooked up of using the PP lib to solve a
>> > classic C++ OO problem: repeated boilerplate in the definition of
>> > Pimpl classes.
>> There is another variation of the idiom, sometimes called "hidden
>> state", which doesn't have the shortcoming in the first place:
>>
> A shortcoming of the hidden state idiom compared to the classic
> delegation idiom is that only the state is encapsulated, not the
> behaviour.  IOWs, if you need to hide the operations, not just the
> state, you still need to mirror the interface class member functions
> into the impl class.  For this case, delegation would be preferred,
> and so Dave's macros.

Yep, I think that's why Aleksey's idea didn't seem like much of a
help to me.  I could easily hide the impl base class, but it didn't
seem like a big advantage.

> As for the macros, they are certainly handy...
>
> Though almost a decade ago I have had bad experiencies using macros to
> do the job of a good editor, so eventually I preferred to have only
> straight up C++ code to feed the compiler and use external tools to
> handle code generation.  Problems were mostly related to very excesive
> preprocessing times (paid on each compilation), blind-debugging and
> the fact that a variate of handy macros started to proliferate as new
> code patterns wanted to be automated, pollutting the code base with so
> many macros that source code looked as being written in another
> language. For me who designed all those macros the resulting code
> looked very clear, but the rest of the team -who had to use them- kept
> complaining about having to learn too many non standard things.
>
> Nowaday, however, I would use the PP, and the handy macros like the
> one Dave just invented, to implement meta-code that generates the
> actual source files that get compiled and 'seen' by felow
> programmers. That way, only the actual maintainer has to know what
> extactly the macro does, while code 'users' (including the compiler
> that has to preprocess the file every day), deals with the expanded
> code only.
>
> So, I like Dave's macro, though I would prefer code generation macros
> not to be put in code directly requiring users to know the inner
> details of expanded code (for debugging, for instance).
>
> Just a thought.

FWIW, my macro only generates declarations, so it doesn't interfere
with debugging.

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to