Boost logo

Boost :

Subject: [boost] [system] A non-allocating message() overload
From: Peter Dimov (lists_at_[hidden])
Date: 2018-09-19 17:56:43


One of the objections against <system_error> is that message() needs to
allocate memory, because it returns an std::string. This is true even for
user-defined categories that can implement it without allocating, with a
static message table.

To address this, I'm thinking of adding the following overload to
boost::system::error_category (with the intent of proposing it for
std::error_category):

    virtual char const* message( int ev, char* buffer, size_t len )
noexcept;

This is modeled after the glibc-specific version of strerror_r (and in fact
has the exact same signature and behavior). If the implementation has a
static character literal corresponding to `ev`, it returns it directly. If
not, it composes an error message into the provided buffer, then returns
`buffer`.

Comments?


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk