On Fri, May 19, 2017 at 9:00 AM, Niall Douglas via Boost
The minimum known working compilers are listed at https://ned14.github.io/boost.outcome/prerequisites.html. As it says, you need GCC 5.4 minimum, and in practice GCC 6 if you want to avoid ICEs, and GCC 7 if you want full functionality (assuming GCC has fixed the bugs Outcome triggers in GCC 6). ... A proposed Boost library need only conform to the latest C++ standard. And as I hint at above, older compilers ICE a lot with Outcome. Use is much more stable on the most recent POSIX compilers. No point therefore in special casing Visual Studio, basically you need a compiler made last year or newer.
This means that out of the box, Beast cannot use Outcome, as Beast requires only C++11. When I contemplate what an implementation of expected/outcome might look like, I do not imagine anything that requires more than C++11. Possibly even less than C++11. When I look at the implementation of Boost.Outcome it seems needlessly over-engineered. I cannot help but think that the Internal Compiler Errors which result from attempting to build with earlier versions of C++ are a consequence of this over-engineering and could have been avoided with a more straightforward implementation. While it is true the letter of the wording regarding Boost library requirements do not mandate support for earlier compilers, I believe it is in bad taste to use such wording to provide cover for unnecessarily complex code. I feel that Outcome is sufficiently narrow in scope and broad in utility that it should not be limited only to "a compiler made last year or newer."