On 11/20/2013 8:39 AM, Paul Mensonides wrote:
On Thu, 14 Nov 2013 18:59:39 -0500, Edward Diener wrote:
On 11/14/2013 5:40 PM, Matt Calabrese wrote:
On Thu, Nov 14, 2013 at 5:26 AM, Edward Diener
mailto:eldiener@tropicsoft.com> wrote: Currently Boost PP does not depend on any other Boost library, not even Config.
I imagine that Paul might respond to this issue. If he does not I will notify him of it.
Regardless, since both C99+ and C++11+ have variadic macros, it should probably be updated to a new BOOST_PP_NO_VARIADICS macro so that we assume compliance by default.
I think that adding another macro confuses the issue even if it mimics the style of config macros.
It is not my call to change the code for determining what compiler should automatically have variadic support enabled in Boost PP, even if I worked prettily heavily on variadic macro support in general in Boost PP with Paul. It's still his library to decide on this IMO and, even though the change is fairly trivial in a single header file, I feel on principal he has to agree to it. I will point this thread out to him.
The end-user can always currently set BOOST_PP_VARIADICS to 1 for any compiler to override the Boost PP automatic setting for that particular compiler, but I do understand your feeling that nearly all compilers now support variadic macros so it should be on, unless set off.
The basic problem here is that BOOST_PP_VARIADICS is a lot stronger than just "compiler supports variadic macros in some form". The pp-lib doesn't pull Boost.Config for two main reasons. First, Boost.Config's variadic macros support macro is much weaker than what is required by a preprocessor metaprogramming library. Second, unlike the rest of Boost, the pp-lib is used outside of just C++ contexts--in real code in the real world. I.e. it is a C/C++ library, so it cannot pull in code assumed to target C++ only. Even if this is not the case with current Boost.Config, the pp-lib cannot place this restriction on Boost.Config (and vice versa).
I just checked and the showstopper bug in clang has apparently been fixed. However, I have not personally confirmed this. Can someone that has a current clang build confirm?
http://llvm.org/bugs/show_bug.cgi?id=12767
Otherwise, if everything is working properly as far as we can tell, I have no issue with enabling by default on clang.
I have updated the Boost PP config.h on the 'trunk' so that BOOST_PP_VARIADICS is now enabled for clang by default. I will check any clang regression tests to make sure this does not cause any problems. In my own testing for clang and Boost PP, withe variadic macro support turned on, clang passed all Boost PP tests.