I didn't mean that you would design the program like this, the point is that you may not have control over the fact that foo returns EC1, and you still have to be able to write bar() (I should have made that clearer by using different namespaces.)
In this comment you're echoing what Niall was saying in the documentation of the original Outcome, where he had several paragraphs attempting to convince the reader to stop using random error codes and _always_ use std::error_code, with technical phrases like "don't be anti-social" :)
But that is not our reality, and it will never be our reality in C++ because C++ programs do use C libraries, and because different C++ libraries commonly use their own types for similar things. This is especially true for error codes.
I just don't see this argument. If you're facing multiple third party C libraries each with their own error coding, that's exactly what std::error_code is there to handle non-intrusively. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/