http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60326
Bug ID: 60326 Summary: Incorrect type from std::make_unsigned<wchar_t> Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: kristian.spangsege at gmail dot com The `std::make_signed` and `std::make_unsigned` templates appear to be incorrectly implemented in GCC 4.8.1. In particular, both `std::make_signed<wchar_t>::type` and `std::make_unsigned<wchar_t>::type` produces the type `wchar_t`. I don't claim to know what the right behaviour is, but it seems wrong, what is currently done. Clang 3.4 with `libc++` does this on x86_64: std::make_unsigned<wchar_t>::type --> int std::make_unsigned<wchar_t>::type --> unsigned which seems more reasonable. The most relevant section in the C++11 standard appears to be 20.9.7.3 [meta.trans.sign].