AMDG On 1/14/19 1:34 PM, Niall Douglas via Boost wrote:
Outcome is now into Boost, and is being tested nightly:
Docs in BoostDoc theme: https://www.boost.org/doc/libs/develop/libs/outcome/doc/html/index.html
Regression matrix: https://www.boost.org/development/tests/develop/developer/outcome.html
One problem is how to exclude from testing GCC 5 which Outcome cannot support due to GCC 5's incorrect parsing of variable templates in nested template classes [1], so I need some sort of Boost.Build project requirement which explicitly excludes GCC 5.
Unfortunately, GCC 5 appears to Boost.Config as fully implementing C++ 14, so this is not straightforward.
You can use predef for compiler version checks. https://www.boost.org/doc/html/predef/check_utilities.html
What might work is to specify a requirement for one of the library items at https://github.com/boostorg/config/blob/develop/checks/Jamfile.v2 which we know for a fact libstdc++ 5 does not implement, but libstdc++ 6 does. However, clang with libstdc++ 5 would then be excluded incorrectly, as clang does not have this parsing bug.
There's nothing stopping you from writing a check for this bug yourself: obj test_gcc_5_bug : test_gcc_5_bug.cpp ; # fails to compile on gcc 5 ... [ check-target-builds test_gcc_5_bug : : <build>no ]
I guess ideally speaking Boost.Config gains a new test testing for this specific compiler parsing bug. But it seems a bit much to ask for this just for Outcome.
Guidance is sought!
In Christ, Steven Watanabe