Boost logo

Boost :

Subject: [boost] Outcome v2 is feature complete
From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2017-07-10 13:32:24

I am pleased to announce that Outcome v2, rewritten to fulfil the Boost
peer review feedback from two months ago, has reached feature
completeness. Outcome provides a STL-quality `result<T, EC>` and an
`outcome<T, EC, E>` implementation of success|failure value transports,
and is expected to pass a second Boost peer review and be submitted for
C++ standardisation as the lowest level of an overall framework as
proposed by:

C++ Monadic interface

* A
proposal to add a utility class to represent expected object (Revision 4)

The idea is that result/outcome are the extremely lightweight
struct-like success|failure value transports suitable for usage in
public APIs, whereas expected is the much richer variant-like monadic
success|failure value transports, and everything participates together
under P0650R0.

A detailed changelog over v1 can be found at The main changes
are the removal of lots of stuff which was in v1, and we now replicate
`std::variant<...>` constructor API. v2 is an “absolute bare minimum”
implementation with no frills.

Outcome v2 is passing the modified v1 test suite handily, and v1 code
should port to v2 easily enough. But as an all-new codebase it lacks:

* Maturity
* Polish
* Use experience
* Documentation (a class synopsis can be found at

My hope is to return Outcome v2 for Boost peer review by October. If you
are using an internal Expected-like object, or Outcome v1, I’d hugely
appreciate it if you tried porting your code to using v2 and giving me
feedback on how it went for you. Minimum compilers needed are GCC 6 or
clang 4. Help with documentation and testing is also hugely appreciated.
My thanks in advance!


Docs (highly incomplete):


ned Productions Limited Consulting

Boost list run by bdawes at, gregod at, cpdaniel at, john at