|
Boost : |
Subject: Re: [boost] [system] Would it be possible to trial a breaking change to Boost.System and see what happens?
From: Bjorn Reese (breese_at_[hidden])
Date: 2018-01-13 09:47:45
On 01/12/18 18:43, Niall Douglas via Boost wrote:
> 2. Success becomes solely the default constructed error code, which is
> code zero and a new category of "null_category". This is internally
> represented by { 0, nullptr }, and thus makes the default constructor
> trivial which is highly desirable as it eliminates any compiler magic
> static fencing for the default constructor. Right now the default
> constructor uses system_category with value 0, and I suspect no code
> will notice this change either.
Does this mean that custom error categories have to change their
make_error_code(e) function to either return a default constructed
error_code in case the error value indicates success, or a custom
error_code otherwise?
In other words, today we do this:
namespace my {
std::error_code make_error_code(my::errc e)
{
return std::error(e, my::category());
}
}
Should that be changed to this?
namespace my {
std::error_code make_error_code(my::errc e) {
if (e == my::success)
return std::error_code();
return std::error_code(e, my::category);
}
}
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk