]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Fix constraint recursion in basic_const_iterator operator- [PR115046]
authorPatrick Palka <ppalka@redhat.com>
Wed, 9 Apr 2025 21:48:05 +0000 (17:48 -0400)
committerPatrick Palka <ppalka@redhat.com>
Wed, 9 Apr 2025 21:48:05 +0000 (17:48 -0400)
commitd69f73c0334486f3c66937388f02008736809e87
treea4c354807539aedc903caec57e3978d0282b7c71
parentf3862ab07943d1fc6e6a0416657ae4b7d1f3941d
libstdc++: Fix constraint recursion in basic_const_iterator operator- [PR115046]

It was proposed in PR112490 to also adjust basic_const_iterator's friend
operator-(sent, iter) overload alongside the r15-7757-g4342c50ca84ae5
adjustments to its comparison operators, but we lacked a concrete
testcase demonstrating fixable constraint recursion there.  It turns out
Hewill Kang's PR115046 is such a testcase!  So this patch makes the same
adjustments to that overload as well, fixing PR115046.  The LWG 4218 P/R
will need to get adjusted too.

PR libstdc++/115046
PR libstdc++/112490

libstdc++-v3/ChangeLog:

* include/bits/stl_iterator.h (basic_const_iterator::operator-):
Replace non-dependent basic_const_iterator function parameter with
a dependent one of type basic_const_iterator<_It2> where _It2
matches _It.
* testsuite/std/ranges/adaptors/as_const/1.cc (test04): New test.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/include/bits/stl_iterator.h
libstdc++-v3/testsuite/std/ranges/adaptors/as_const/1.cc