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

--- 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:3aeb2edee2f9fc39ab77c7e020f09d7204b167ac

commit r15-6125-g3aeb2edee2f9fc39ab77c7e020f09d7204b167ac
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Mon Dec 9 17:35:24 2024 +0000

    libstdc++: Skip redundant assertions in std::array equality [PR106212]

    As PR c++/106212 shows, the Debug Mode checks cause a compilation error
    for equality comparisons involving std::array prvalues in constant
    expressions. Those Debug Mode checks are redundant when
    comparing two std::array objects, because we already know we have a
    valid range. We can also avoid the unnecessary step of using
    std::__niter_base to do __normal_iterator unwrapping, which isn't needed
    because our std::array iterators are just pointers. Using
    std::__equal_aux1 instead of std::equal avoids the redundant checks in
    std::equal and std::__equal_aux.

    libstdc++-v3/ChangeLog:

            PR libstdc++/106212
            * include/std/array (operator==): Use std::__equal_aux1 instead
            of std::equal.
            * testsuite/23_containers/array/comparison_operators/106212.cc:
            New test.

Reply via email to