http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60555
Bug ID: 60555
Summary: std::system_category().default_error_condition()
doesn't map system errno values to
std::generic_category()
Product: gcc
Version: 4.7.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: c.m.brandenburg at gmail dot com
Created attachment 32376
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32376&action=edit
Program that exposes the bug.
According to the C++ standard, if the value ev corresponds to the POSIX errno
value posv, then std::system_category().default_error_condition(ev) should
return std::error_condition(posv, generic_category()). The libstdc++
implementation doesn't do this. Instead, it always returns
std::error_condition(ev, std::system_category()).
Attached is a program that exposes this bug. I've seen this problem on 4.7.2,
but an inspection of the source code for 4.8.2 suggests the bug exists for that
version too.