On 5/18/2017 5:40 PM, Peter Dimov via Boost wrote:
John Maddock wrote:
I've just added travis support to Boost.Config, the problem is that there are a large number of clang failures that I simply don't know how to fix, see: https://travis-ci.org/boostorg/config
The errors occur because clang chokes on libstdc++ code, so while <regex> exists (for example), clang won't parse it. Any ideas anyone?
The configuration with the built-in clang++ in C++11 mode should just be disabled; the default libstdc++ on Travis is 4.6 and is too broken for any serious C++11 work.
Clang 3.5 uses libstdc++ 4.8, for which Config probably disables <regex> as known non-working, which is why it passes.
Clang 3.6 and above on that configuration use libstdc++ 4.9, which we probably assume is working, but apparently not on Clang (it doesn't like the constant expression 1 << 32.)
So we should disable <regex> 4.9 on Clang. This:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78905
says that _GLIBCXX_REGEX_STATE_LIMIT is defined on 5 and _GLIBCXX_RELEASE is defined on 7, although I see that we have our own macro BOOST_LIBSTDCXX_VERSION, so we could just use that.
I have always had a difficult problem trying to figure out with which version of gcc/libstdc++ a particular version of clang will work. I have asked about this on the clang developers mailing list but received no answer. If there is any information about this anywhere I would surely like to know where it is.