It's true that if we use Outcome, the "failed" bit is already there so we don't need to ask the error_code at all. But the topic here, brought up by Niall, is error_code and not Outcome. Presumably, being the author of Outcome, he wouldn't ask for something he knows he doesn't need. :-)
Actually for Outcome, what I wanted from Boost.System was constexpr
construction (got that) and removal of <string> (didn't get that).
Outcome is useful precisely as a means to not have this problem with
error_code. So the fix being discussed is not needed by Outcome. My
interest in it is purely due to code written using Outcome which works
with error codes.
There is a second purpose though. Given my failure to remove <string>, I
think it is now inevitable that I'll need to go implement a