Boost logo

Boost Users :

Subject: Re: [Boost-users] Problem with variadic BOOST_PP_TUPLE_REM in Clang
From: Edward Diener (eldiener_at_[hidden])
Date: 2013-11-21 15:35:28


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 <eldiener_at_[hidden]
>>> <mailto:eldiener_at_[hidden]>> 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.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net