Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2005-07-14 15:53:02


"Arkadiy Vertleyb" <vertleyb_at_[hidden]> writes:

> "David Abrahams" <dave_at_[hidden]> wrote
>
>> I am defining a macro,
>>
>> BOOST_PARAMETER_KEYWORD(tag_namespace, name)
>>
>> that declares a keyword for the Parameter library. It has to be used
>> at namespace scope. I have the option to define it so that correct
>> usage requires a trailing semicolon, or so that the trailing semicolon
>> is forbidden. Unfortunately I don't have the ability to make it
>> optional. Which should I choose?
>>
>> IMO there's no chance of confusing it with a function call, since a
>> function call would be illegal in the context in which it's used, and
>> people are naturally more likely to add a semicolon without thinking
>> about it, and if I design the macro so that a semicolon is required it
>> will interact more smoothly with editors and pretty-printers. So I
>> can't see any good reason not to require the semicolon. Arguments?
>
> One more option (probably an overkill):
>
> #ifdef (BOOST_USE_TRAILING_SEMICOLON)
> # define BOOST_TRAILING_SEMICOLON ;
> #else
> # define BOOST_TRAILING_SEMICOLON
> #endif
>
> Now end all your macro definitions with BOOST_TRAILING_SEMICOLON instead of
> ';', and the user can change the style with just one [un]define.

Very scary. That would break any (Boost) libraries that happen to use
the opposite convention.

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

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