https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85951
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- Author: redi Date: Thu May 31 14:07:22 2018 New Revision: 261024 URL: https://gcc.gnu.org/viewcvs?rev=261024&root=gcc&view=rev Log: PR libstdc++/85951 for make_signed/make_unsigned for character types Because the wide character types are neither signed integer types nor unsigned integer types they need to be transformed to an integral type of the correct size and the lowest rank (which is not necessarily the underlying type). Reuse the helpers for enumeration types to select the correct integer. PR libstdc++/85951 * include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define uint_least16_t and uint_least32_t. (__make_unsigned<wchar_t>): Define unconditionally. (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define. (__make_signed<wchar_t>, __make_signed<char16_t>) (__make_signed<char32_t>)): Define unconditionally. * testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check wchar_t, char16_t and char32_t are transformed correctly. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust dg-error lineno. * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check wchar_t, char16_t and char32_t are transformed correctly. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust dg-error lineno. Modified: branches/gcc-8-branch/libstdc++-v3/ChangeLog branches/gcc-8-branch/libstdc++-v3/include/std/type_traits branches/gcc-8-branch/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-3.cc branches/gcc-8-branch/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc branches/gcc-8-branch/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-3.cc branches/gcc-8-branch/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc