https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96042
--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>: https://gcc.gnu.org/g:e6e01618e83bcd9eb3a2b27df30ed87106a748b4 commit r11-2773-ge6e01618e83bcd9eb3a2b27df30ed87106a748b4 Author: Jonathan Wakely <jwak...@redhat.com> Date: Wed Aug 19 20:36:10 2020 +0100 libstdc++: Make make-unsigned-like-t<__int128> work [PR 96042] As well as ensuring that numeric_limits<__int128> is defined, we need to ensure that make-unsigned-like-t and to-unsigned-like work correctly for 128-bit integers in strict mode. This ensures that a subrange created from an iota_view's iterator and sentinel can represent its size. Co-authored-by: Patrick Palka <ppa...@redhat.com> libstdc++-v3/ChangeLog: 2020-08-19 Jonathan Wakely <jwak...@redhat.com> Patrick Palka <ppa...@redhat.com> PR libstdc++/96042 * include/bits/range_access.h (__detail::__to_unsigned_like): Do not use make_unsigned_t<T> in the return type, as it can result in an error before the integral<T> constraint is checked. [__STRICT_ANSI__]: Add overloads for 128-bit integer types. (__detail::__make_unsigned_like_t): Define as the return type of __to_unsigned_like. * testsuite/std/ranges/subrange/96042.cc: New test.