
[mailto:boost-bounces@lists.boost.org] On Behalf Of Jonathan Turkanis
#define PARAM(has_param) BOOST_PP_IF( \ has_param \ , BOOST_PP_IDENTITY(typename Param) \ , BOOST_PP_EMPTY)()
Yes, that's better. It's hard to believe that VC6 could be the only conforming preprocessor on this point. though ;-)
It isn't that other compilers are non-conforming, they just chose a different way to handle undefined behavior. C++ will likely soon have the new facilities of C99's preprocessor, which will include variadic macros and placemarkers (which would allow your original code). So, other preprocessors are just using forward-thinking to handle the undefined behavior, while VC's preprocessor (all the way through VC71) is just a complete relic. Regards, Paul Mensonides