On 1/19/18 9:16 AM, Vinnie Falco via Boost wrote:
Nobody wants to write
if(ec == my_condition::success)
LOL - I want to write this.
When then can instead write
if(! ec)
Even in your own code you write `if(! ec)`:
And when I do I want to consider it a mistake.
https://github.com/boostorg/asio/blob/6814d260d02300a97521c1a93d02e30877fb8f...
Whether it was intended or not, established practice is to treat the bool conversion of error_code as false==success and true==failure.
It may be established, but it's not good practice. It's an example where implicit conversion SEEMS to make things simpler and more expressive, but it ends up making things more error prone.
I have long felt that the documentation for
and is terribly inadequate which probably accounts for the pervasive misconceptions.
Agreed. Personally I can never remember the details of any of these things and I'm constantly going back to lookup how they are to be used. In the case of system_error - I like it, but I have to go back to Chris's web page every time to remember the details on how to use it. It's too clever for me to remember.
The standard is completely unhelpful in offering guidance on its use, and all of the usual websites (cppreference.com or the boost docs for example) are similarly unhelpful.
Agreed.
Chris' blog posts on error_code were instructive but incomplete. I found this the most useful.
Andrezj's blog posts did the best job of providing tutorial-like guidance but of course I read them too late.
People are still trying to figure out how to use error_code and having trouble because it isn't well explained. Ideas like "if(! ec)" should not be used to check for success do nothing to improve this situation.
This situation is unfortunate and applies to many libraries including Boost and the standard library. I've been trying to promote the addressing of this, but it's not easy for a number of reasons. I do feel a tiny bit of progress is being made. Just a fact that questions/complaints of this nature are raised more frequently is a good sign. Still, the situation is very frustrating. Robert Ramey