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

--- Comment #4 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:3b5567c3ec7e5759bdecc6a6fc0be2b65a93636e

commit r13-1769-g3b5567c3ec7e5759bdecc6a6fc0be2b65a93636e
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Wed Jul 20 12:49:28 2022 +0100

    libstdc++: Fix minor bugs in std::common_iterator

    The noexcept-specifier for some std::common_iterator constructors was
    incorrectly using an rvalue as the first argument of
    std::is_nothrow_assignable_v. This gave the wrong answer for some types,
    e.g. std::common_iterator<int*, S>, because an rvalue of scalar type
    cannot be assigned to.

    Also fix the friend declaration to use the same constraints as on the
    definition of the class template. G++ fails to diagnose this error, due
    to PR c++/96830.

    Finally, the copy constructor was using std::move for its argument
    in some cases, which should be removed.

    libstdc++-v3/ChangeLog:

            * include/bits/stl_iterator.h (common_iterator): Fix incorrect
            uses of is_nothrow_assignable_v. Fix inconsistent constraints on
            friend declaration. Do not move argument in copy constructor.
            * testsuite/24_iterators/common_iterator/1.cc: Check for
            noexcept constructibnle/assignable.

Reply via email to