error_code
construction from rvalues of error_category
Section: 19.5.4.1 [syserr.errcode.overview] Status: New Submitter: Antony Polukhin Opened: 2018-01-24 Last modified: 2020-09-06
Priority: 3
View all other issues in [syserr.errcode.overview].
View all issues with New status.
Discussion:
Constructor error_code(int val, const error_category& cat)
and
member function void assign(int val, const error_category& cat)
could be misused if a custom error_category
is provided:
error_code ec{1, test_category{}}; // ec holds a pointer/reference to a temporary
[2018-06-18 after reflector discussion]
Priority set to 3
Proposed resolution:
This wording is relative to N4713.
Modify 19.5.4.1 [syserr.errcode.overview] as indicated:
namespace std { class error_code { public: // 19.5.4.2 [syserr.errcode.constructors], constructors […] error_code(int val, const error_category& cat) noexcept; error_code(int val, const error_category&& cat) = delete; […] // 19.5.4.3 [syserr.errcode.modifiers], modifiers void assign(int val, const error_category& cat) noexcept; void assign(int val, const error_category&& cat) = delete; […] }; […] }