]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Fix _ForwardIteratorConcept for __gnu_debug::vector<bool>
authorJonathan Wakely <jwakely@redhat.com>
Thu, 30 Sep 2021 10:25:15 +0000 (11:25 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Fri, 1 Oct 2021 14:04:02 +0000 (15:04 +0100)
commitc67339d12653c33f85f8141789d7a7cf38831cbd
tree302b3b263e2b706df3a165a2e1a75344b121ce0f
parentb8d42cfa84fb31e592411e6cea41bdde980c51d7
libstdc++: Fix _ForwardIteratorConcept for __gnu_debug::vector<bool>

The recent changes to the _GLIBCXX_CONCEPT_CHECKS checks for forward
iterators don't work for vector<bool> iterators in debug mode, because
the _Safe_iterator specializations don't match the special cases I added
for _Bit_iterator and _Bit_const_iterator.

This refactors the _ForwardIteratorReferenceConcept class template to
identify vector<bool> iterators using a new trait, which also works for
debug iterators.

libstdc++-v3/ChangeLog:

* include/bits/boost_concept_check.h (_Is_vector_bool_iterator):
New trait to identify vector<bool> iterators, including debug
ones.
(_ForwardIteratorReferenceConcept): Add default template
argument using _Is_vector_bool_iterator and use it in partial
specialization for the vector<bool> cases.
(_Mutable_ForwardIteratorReferenceConcept): Likewise.
* testsuite/24_iterators/operations/prev_neg.cc: Adjust dg-error
line number.
libstdc++-v3/include/bits/boost_concept_check.h
libstdc++-v3/testsuite/24_iterators/operations/prev_neg.cc