https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93267

--- Comment #9 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:2a0f6c61b4db19535c632be68bddad74b6adb6cf

commit r10-5985-g2a0f6c61b4db19535c632be68bddad74b6adb6cf
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Wed Jan 15 14:09:35 2020 +0000

    libstdc++: Fix weakly_incrementable to allow __int128 (PR 93267)

    The __iota_diff_t alias can be the type __int128, but that does not
    satisfy the signed_integral and __is_signed_integer_like concepts when
    __STRICT_ANSI__ is defined (which is true for -std=c++2a).

    Because weakly_incrementable is defined in terms of signed_integral, it
    is not satisfied by __int128, which means iota_view's iterator doesn't
    always satisfy input_or_output_iterator and so iota_view is not always a
    range.

    The solution is to define __max_size_type and __max_diff_type using
    __int128, so that __is_signed_integer_like allows __int128, and then
    make weakly_incrementable use __is_signed_integer_like instead of
    signed_integral.

        PR libstdc++/93267
        * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
        Move here from <bits/range_access.h> and define using __int128 when
        available.
        (__is_integer_like, __is_signed_integer_like): Move here from
        <bits/range_access.h>.
        (weakly_incrementable): Use __is_signed_integer_like.
        * include/bits/range_access.h (__max_diff_type, __max_size_type)
        (__is_integer_like, __is_signed_integer_like): Move to
        <bits/iterator_concepts.h>.
        (__make_unsigned_like_t): Move here from <ranges>.
        * include/std/ranges (__make_unsigned_like_t): Move to
        <bits/range_access.h>.
        (iota_view): Replace using-directive with using-declarations.
        * testsuite/std/ranges/iota/93267.cc: New test.
        * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.

Reply via email to