Boost logo

Boost :

Subject: Re: [boost] Showstopper for Boost 1.56?
From: Edward Diener (eldiener_at_[hidden])
Date: 2014-08-04 20:55:01


On 8/4/2014 8:08 PM, pmenso57_at_[hidden] wrote:
> ----- Original Message -----
>> From: "Edward Diener" <eldiener_at_[hidden]>
>
>>>> As far as end-user using Boost libraries, other than building them, with
>>>> clang they would only see the clang warnings if they specify '-pedantic'
>>>> and the library used variadic macros.
>>>
>>> For a 1.56 release, this seems like a very sensible least cost
>>> solution. It breaks nothing, is easy to do, and can be done
>>> immediately.
>>>
>>> Later on individual libraries can restore pedantic warnings for clang
>>> if they do whatever #pragma warning fixes necessary. Up to their
>>> maintainers.
>>
>> I submitted pull requests, directly on 'master', for chrono, regex,
>> threads, and test to fix the warnings problem. But it appears to be too
>> late for 1.56.
>>
>> I understand your being upset by all the warnings, and perhaps users
>> will not like them when they build Boost 1.56 with clang, but there are
>> worse things that can happen in a new release.
>
> Are these just warnings, but the results are still correct?

Yes.

>
> Either way, this is a clang issue. They intentionally chose to *not* implement the standard instead deferring to the garbage MSVC status quo. Given that and their attitude of "more" being put above "better", a sea of warnings is a good thing.

No, that is not what is happening. We are not talking about the clang
Windows VC++ targeted implementation but just the regular clang-linux (
or mingw/gcc on Windows ) implementation.

In your original config.h you had turned off variadic macro support for
clang unconditionally. Then I turned it on unconditionally after
complaints from Boost users and developers and being told by clang
developers that clang has always supported variadic macros. However if
the necessary clang compiler options are not on ( probably something
like gcc's std=c++0x option ), clang issues lots of warnings when you
use variadic macros although the output is fine.

I should have probably probably just allowed your code of:

> # elif !defined __cplusplus && __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L
> # define BOOST_PP_VARIADICS 1
> # else
> # define BOOST_PP_VARIADICS 0

to determine the issue for clang rather than unconditionally turn it on.
Then using clang in Boost PP with variadic macros would have been the
same as using gcc in Boost PP with variadic macros.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk