Boost logo

Boost :

Subject: Re: [boost] [preprocessor] Warning: Incoming
From: Paul Mensonides (pmenso57_at_[hidden])
Date: 2011-07-01 23:29:20


On Sat, 02 Jul 2011 01:39:38 +0000, Nathan Ridge wrote:

>> And my response is the same as always: the ease-of-use argument is a
>> red herring. End user expectations are often misguided, and doing
>> something wrong, on purpose, to fulfill those expectations is bad
>> design and simply perpetuates misguided expectations. Input via pp-lib
>> sequence is insignificantly different in terms of number of typed
>> characters. The difference is typically two parentheses--one at the
>> beginning and one at the end (", " is the same number of characters as
>> ")(").
>
> As a pp-lib user, I find it much more cumbersome to write
> "MY_MACRO((a)(b)(c))" than "MY_MACRO(a, b, c)" - primarily because the
> latter requires a lot less keyboard acrobatics - and I have written my
> own equivalent of VARIADIC_TO_SEQ to allow me to write the latter.

Keyboard acrobatics? I thought programmers were the last of the breed
that could type all of those special characters without evening thinking
about it. :) In any case, I'd bet that this has a lot more to do with
familiarity (even muscle familiarity) than it does with acrobatics. I do
both all of the time and because I'm used to both, the difference in
keystrokes is irrelevant. Further, it is much easier to work with
sequences in debugging contexts because it is easier to compose them and
(slightly) easier remove elements (actually removing or via comments).
E.g.

#define A (1)(2)(3)
#ifndef NDEBUG
    #define B (4)(5)(6)
#else
    #define B
#endif

MY_MACRO(A B)

What do you do with sequences of C++ types which may contain open
commas? The bottom line is that MY_MACRO(a, b, c) does not scale to the
general case. Neither does MY_MACRO((a, b, c)), though it gets closer
(though not for C++ types). The pp-lib has to provide infrastructure to
support the general case, not a bunch of highly specialized cases.

Regards,
Paul Mensonides


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