From: Arkadiy Vertleyb (vertleyb_at_[hidden])
Date: 2007-03-14 14:55:13
"Steven Watanabe" <steven_at_[hidden]> wrote
> Arkadiy Vertleyb <vertleyb <at> hotmail.com> writes:
>> "Steven Watanabe" <steven <at> providere-consulting.com> wrote
>> > The definition of BOOST_TYPEOF_NESTED_TYPEDEF
>> > includes a semicolon at the end. It should act like a normal
>> > statement.
>> There was a discussion in the past about whether or not such macros
>> contain semicolons. There was no agreement on this. We decided to
>> semicolons in typeof macros, where possible. This way it can be used
>> or without semicolon at the end.
>> Of course this is not related to BOOST_TYPEOF or BOOST_AUTO, but
>> BOOST_TYPEOF_REGISTER_XXX macros, for example, all contain semicolons at
> As far as I can make out from the standard, an extra
> semicolon is only permitted at function scope. Trying
> to put a semicolon after BOOST_TYPEOF_NESTED_TYPEDEF
> inside a class or at namespace scope causes warnings
> on at least metrowerks 9.2 and como 4.3.3
I think you are right -- double semicolon cannot be used in all contexts,
and this makes not using semicolon the only correct usage.
As far as I can remember, when this was discussed (I am no longer able to
find the thread), Paul Mensonides was in strong disagreement with the idea
of a macro usage looking "like a normal statement".
Frankly speaking I have no strong opinion on the subject. I do believe,
however, that this should be the subject of standartization inside Boost, so
that the users don't become confused while working with multiple libraries.
If such a guideline is accepted, we will change the typeof macros to comply.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk