
Zitat von Wolf Lammen <ookami1@gmx.de>:
Well, perhaps I should have written: Variadic macros are covered by C99 or later only, not by C90. So, whereever you want to introduce them, you have to provide a parallel C90 implementation, unless you want to exclude all non C99 conformant compilers.
IMHO, if you use variadic macros to optimize internal processing for a subset of compilers, this is ok. But you must not expose them on the outside interface of BOOST_PP (such as to declare a new type), because that wouldn't be portable.
boost already does that in many cases, and there are many more to come due to c++0x. even type "long long" is C99/C++0x. that's what Boost.Config is for. this thread has been about adding a macro to indicate variadic macro support to Boost.Config, and then I brought up supporting variadic macros in Boost.Preprocessor through variadic tuples - for those compilers that support them (which probably includes MSVC thanks to the mentioned bug workaround). I don't see how this relates to specific PP engines like "chaos", or why variadic tuples could only be used internally, as long as it is documented that they require compiler support.