This tutorial refers to Outcome v2.1, which is the current stable version. In early 2021 it shall be refactored to refer to Outcome v2.2. Where changes are particularly profound however, we have carved out special mention of v2.2 facilities, but otherwise if targeting v2.2, you shall need to apply the v2.1 => v2.2 upgrade guide to the content in this tutorial.
The absolute minimum that you need to know to get started with Outcome immediately.
Before we begin
Essential information before you begin the tutorial.
Gentle introduction to writing code with simple success-or-failure return types.
Success-or-failure return types where failure can take two forms, expected/handled failure and unexpected/abort failure.
Describes the concept of NoValuePolicy and how to use no-value policies.
Using Outcome in C++ Coroutines
Why you should avoid custom
Etypes in public APIs.
- Before we begin
If you have a bit more time, this covers all the time-saving ways you can customise and automate Outcome for various use cases, especially in larger codebases made up of multiple third party libraries.
Success-or-failure return types where extra information in addition to the error code accompanies failure.
Result returning constructors
How to metaprogram construction of objects which use result
to return failure instead of throwing a C++ exception.
Intercepting useful events such as initial construction, copies and moves so you can capture backtraces, fire debug breakpoints etc.
Interoperating with std::expected
and other ValueOrError concept matching types.
- Custom payloads