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.

Partially working compilers (this was last updated January 2019):

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