Outcome is a header-only C++ 14 library known to work well on the latest point releases of these compiler-platform combinations or better:

For non-Windows non-POSIX platforms (typically embedded systems), Outcome is usable in its Outcome.Experimental form with the macro SYSTEM_ERROR2_NOT_POSIX defined.

It is worth turning on C++ 17 or C++ 20 if you can, as there are many usability and performance improvements. Any Concepts TS or Coroutines TS implemented by your compiler is automatically detected and used.

Known compiler issues (this was last updated April 2023):

“C++ 14” compilers which do not work, and will not work until their maintainers fix them: