$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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
<boost_at_[hidden]> wrote:
> 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."