mirror of git://gcc.gnu.org/git/gcc.git
LWG 3946 made const_iterator_t/sentinel_t agree with ranges::cbegin/cend by defining the aliases in terms of the CPOs, but I defined it the other way around in an incorrect way that made the aliases not consider range-ness of const T via __possibly_const_range. This patch reimplements the proposed resolution in a more obviously correct way, mirroring the wording. PR libstdc++/122842 libstdc++-v3/ChangeLog: * include/bits/ranges_base.h (__access:_CBegin): Define in terms of const_iterator directly, not const_iterator_t. (__access::_CEnd): Likewise in terms of const_sentinel vs const_sentinel_t. (const_iterator_t): Move down definition and define in terms of ranges::cbegin as per LWG 3946. (const_sentinel_t): Likewise in terms of ranges::cend. * testsuite/24_iterators/const_iterator/1.cc (test02): Correct test for int[], std::array and std::vector. Also test std::string. Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com> Reviewed-by: Jonathan Wakely <jwakely@redhat.com> |
||
|---|---|---|
| .. | ||
| associated_types | ||
| back_insert_iterator | ||
| bidirectional | ||
| common_iterator | ||
| const_iterator | ||
| contiguous | ||
| counted_iterator | ||
| customization_points | ||
| forward | ||
| front_insert_iterator | ||
| headers/iterator | ||
| indirect_callable | ||
| input | ||
| insert_iterator | ||
| istream_iterator | ||
| istreambuf_iterator | ||
| move_iterator | ||
| normal_iterator | ||
| operations | ||
| ostream_iterator | ||
| ostreambuf_iterator | ||
| output | ||
| random_access | ||
| range_access | ||
| range_generators | ||
| range_operations | ||
| reverse_iterator | ||
| aliases.cc | ||
| container_access.cc | ||