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].

Reply via email to