Subject: Re: [boost] Alternative implementation for BOOST_PP_VARIADIC_SIZE
From: Jens Gustedt (jens.gustedt_at_[hidden])
Date: 2011-11-15 05:22:51
Paul Mensonides <pmenso57 <at> comcast.net> writes:
> On Mon, 14 Nov 2011 19:13:17 +0000, Jens Gustedt wrote:
> (Excluding the pathological case of a unbalanced parenthesis.)
thanks a lot for your detailed explanation.
yes, I am not interested in that case. I don't expect a
compiler/preprocessor to don anything sensible when someone tries to
pass in expressions that lead to unbalanced parenthesis.
> You can make it work with input terminating in a function-like macro at
> the cost of making it not work for other things.
Still (even with your explanations below) I don't capture cases that
my macro wouldn't handle.
> The other way is by intentionally putting a (variadic) function-like macro
> name in front of the argument and a () after the argument which may expand
> against the argument and may expand against the trailing () that you
> added. However, if the argument ends in a function-like macro name, you
> have no idea what that macro is, what its arity is, what it expands to,
my macro does a case analysis of four different scenarios and decides
upon that. And I re-read the standard (C99) several times and
implemented my own preprocessor to see if I captured all corner cases.
Maybe I overlooked a case, then it should be possible to add that or
at least it should be possible to document that behavior. So I would
be very curious if you could point me on a concrete example of such a
> The bottom line is that there is no general way to interact with the
> argument that doesn't cause compiler errors with some input.
Please, be more concrete and show me such an input.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk