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

--- Comment #7 from GCC 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:b281e13ecad12d07209924a7282c53be3a1c3774

commit r15-4709-gb281e13ecad12d07209924a7282c53be3a1c3774
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue Oct 8 21:15:18 2024 +0100

    libstdc++: Add P1206R7 from_range members to std::vector [PR111055]

    This is another piece of P1206R7, adding new members to std::vector and
    std::vector<bool>.

    The __uninitialized_copy_a extension needs to be enhanced to support
    passing non-common ranges (i.e. a sentinel that is a different type from
    the iterator) and move-only input iterators.

    libstdc++-v3/ChangeLog:

            PR libstdc++/111055
            * include/bits/ranges_base.h (__container_compatible_range): New
            concept.
            * include/bits/stl_bvector.h (vector(from_range, R&&, const
Alloc&))
            (assign_range, insert_range, append_range): Define.
            * include/bits/stl_uninitialized.h (__do_uninit_copy): Support
            non-common ranges.
            (__uninitialized_copy_a): Likewise.
            * include/bits/stl_vector.h (_Vector_base::_M_append_range_to):
            New function.
            (_Vector_base::_M_append_range): Likewise.
            (vector(from_range, R&&, const Alloc&), assign_range): Define.
            (append_range): Define.
            (insert_range): Declare.
            * include/debug/vector (vector(from_range, R&&, const Alloc&))
            (assign_range, insert_range, append_range): Define.
            * include/bits/vector.tcc (insert_range): Define.
            * testsuite/util/testsuite_iterators.h
(input_iterator_wrapper_rval):
            New class template.
            * testsuite/23_containers/vector/bool/cons/from_range.cc: New test.
            *
testsuite/23_containers/vector/bool/modifiers/assign/assign_range.cc:
            New test.
            *
testsuite/23_containers/vector/bool/modifiers/insert/append_range.cc:
            New test.
            *
testsuite/23_containers/vector/bool/modifiers/insert/insert_range.cc:
            New test.
            * testsuite/23_containers/vector/cons/from_range.cc: New test.
            * testsuite/23_containers/vector/modifiers/append_range.cc: New
test.
            * testsuite/23_containers/vector/modifiers/assign/assign_range.cc:
            New test.
            * testsuite/23_containers/vector/modifiers/insert/insert_range.cc:
            New test.

    Reviewed-by: Patrick Palka <ppa...@redhat.com>

Reply via email to