Outcome is a C++14 library for reporting and handling function failures. It can be used as a substitute for, or a complement to, the exception handling mechanism. One use case is for contexts where using C++ exception handling is unsuitable for different reasons: * The high relative cost of throwing and catching a C++ exception. * Making some or all control paths explicitly detailed to aid code correctness auditing, as opposed to having hidden control paths caused by exceptions potentially thrown from any place. * Company policy to compile with exceptions disabled. * Maintaining a code base that was never designed with exception-safety in mind. * Parts of the programs/frameworks that themselves implement exception handling and cannot afford to use exceptions, like propagating failure reports across threads, tasks, fibers.