
Beman Dawes <bdawes@acm.org> wrote:
I'm very curious to hear if people think the newer names are an improvement over the TR2 versions.
What about maybe ditching the member functions sysno_value() and errno_value() entirely and instead having additional free function overloads: sysno_t to_sysno(error_code ec); errno_t to_errno(error_code ec); And the only way to set an error code is by assignment: ec = 1234; // sysno ec = error_code(1234, from_errno); Some quick notes on the implementation (sorry for the noise if someone has already mentioned them): - I notice that you only use strerror() on POSIX platforms. On some platforms this is not threadsafe, and strerror_r() needs to be used instead. From memory this function's behaviour can differ a bit between various platforms as well. - The ::LocalFree() usage isn't exception safe. See: <http://boost.cvs.sourceforge.net/boost/boost/boost/asio/system_exception.hpp?revision=1.1&view=markup> in the implementation of what() for an example. Cheers, Chris