aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2018-05-31 13:18:19 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2018-05-31 13:18:19 +0100
commit22f1f4c790759674d47b704e0faa140343e542d5 (patch)
treecd22aba21544238369a50a0a80152a5203283080 /gcc
parent2ae39fb2b00b0cfa48a1b62e0a6565daa54a80f3 (diff)
downloadgcc-22f1f4c790759674d47b704e0faa140343e542d5.zip
gcc-22f1f4c790759674d47b704e0faa140343e542d5.tar.gz
gcc-22f1f4c790759674d47b704e0faa140343e542d5.tar.bz2
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. The refactoring of __make_unsigned_selector and __make_signed_selector slightly reduces the number of template instantiations and so reduces memory usage. 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_selector<_Tp, true, false>): Remove intermediate typedefs. (__make_unsigned_selector_base): New type to provide helper templates. (__make_unsigned_selector<_Tp, false, true>): Reimplement using __make_unsigned_selector_base helpers. (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define. (__make_signed_selector<_Tp, true, false>): Remove intermediate typedefs. (__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. From-SVN: r261023
Diffstat (limited to 'gcc')
0 files changed, 0 insertions, 0 deletions