
"Arkadiy Vertleyb" <vertleyb@hotmail.com> writes:
"David Abrahams" <dave@boost-consulting.com> 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