Navigation : Prerequisites Build and install Review of Error Handling Frameworks Motivation Future ABI stability guarantees Tutorial Recipes Experimental API reference - Macros -- Constrained template macros -- Version macros -- `OUTCOME_CO_TRY(var, expr)` -- `OUTCOME_CO_TRYV(expr)/OUTCOME_CO_TRY(expr)` -- `OUTCOME_CO_TRYV2(spec, expr)` -- `OUTCOME_CO_TRYV2_FAILURE_LIKELY(spec, expr)` -- `OUTCOME_CO_TRYV_FAILURE_LIKELY(expr)/OUTCOME_CO_TRY_FAILURE_LIKELY(expr)` -- `OUTCOME_CO_TRYX(expr)` -- `OUTCOME_CO_TRYX_FAILURE_LIKELY(expr)` -- `OUTCOME_CO_TRY_FAILURE_LIKELY(var, expr)` -- `OUTCOME_DISABLE_EXECINFO` -- `OUTCOME_ENABLE_LEGACY_SUPPORT_FOR` -- `OUTCOME_NODISCARD` -- `OUTCOME_REQUIRES(...)` -- `OUTCOME_SYMBOL_VISIBLE` -- `OUTCOME_THREAD_LOCAL` -- `OUTCOME_THROW_EXCEPTION(expr)` -- `OUTCOME_TRY(var, expr)` -- `OUTCOME_TRYV(expr)/OUTCOME_TRY(expr)` -- `OUTCOME_TRYV2(spec, expr)` -- `OUTCOME_TRYV2_FAILURE_LIKELY(spec, expr)` -- `OUTCOME_TRYV_FAILURE_LIKELY(expr)/OUTCOME_TRY_FAILURE_LIKELY(expr)` -- `OUTCOME_TRYX(expr)` -- `OUTCOME_TRYX_FAILURE_LIKELY(expr)` -- `OUTCOME_TRY_FAILURE_LIKELY(var, expr)` -- `OUTCOME_USE_STD_IN_PLACE_TYPE` -- `OUTCOME_USE_STD_IS_NOTHROW_SWAPPABLE` - Concepts - Converters - Traits - Policies - Types - Aliases - Functions Frequently asked questions Videos Changelog History OUTCOME_REQUIRES(...) A C++ 20 requires(...), if available. Overridable: Define before inclusion. Default: To requires(...) if on C++ 20 or later, else to nothing. Header: <outcome/config.hpp> OUTCOME_NODISCARD OUTCOME_SYMBOL_VISIBLE