On 8/4/2014 8:08 PM, pmenso57@comcast.net wrote:
----- Original Message -----
From: "Edward Diener"
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.