Subject: Re: [boost] [review] Review of Outcome (starts Fri-19-May)
From: Vinnie Falco (vinnie.falco_at_[hidden])
Date: 2017-05-19 16:18:40
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."
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk