【发布时间】:2019-04-05 21:47:21
【问题描述】:
我发现函数 default_error_condition 在我的代码中没有按预期工作
auto ec = std::system_category().default_error_condition(EACCES);
std::cout << ec.value() << std::endl << ec.category().name() << std::endl;
返回的 ec 值具有 system 错误类别,但它必须是 generic,如果我从文档中得到正确的话,例如cppreference和gcc源码system_error.cc
UPD:在标准 19.5.1.5 错误类别对象
中也发现了此注释对象的 default_error_condition 虚函数的行为如下:
如果参数 ev 对应于 POSIX errno 值 posv,则函数应返回 error_condition(posv, generic_category())。否则,函数将返回 error_condition(ev, system_category())
这里发生了什么?
我在 linux 上使用 g++ 7.3.0
【问题讨论】:
标签: c++ error-handling g++ std