]> git.feebdaed.xyz Git - 0xmirror/gcc.git/commit
libstdc++: Make more _Safe_iterator functions in constexpr in C++20.
authorTomasz Kamiński <tkaminsk@redhat.com>
Fri, 19 Dec 2025 12:07:00 +0000 (13:07 +0100)
committerTomasz Kamiński <tkaminsk@redhat.com>
Fri, 19 Dec 2025 12:24:11 +0000 (13:24 +0100)
commit158acb680582d99d359eb4e609e956aaf1d45ab4
tree2e1fe74faf043419f9a91e2ced2a53c246ce0165
parent5f39aa74f2217e04d2868f2110523b2a0ed41165
libstdc++: Make more _Safe_iterator functions in constexpr in C++20.

This functions are indirectly called from flat_ containers operations
(from preconditions check of lower_bound, upper_bound, ...) that were
made constexpr by r16-6026-gbf9dd44a97400e, leading to test with
in _GLIBCXX_DEBUG mode.

For __can_advance we uncoditionally return true in constant evaluation,
similary to __valid_range. The constexpr iterator will detect comparision
of iterator to different ranges.

libstdc++-v3/ChangeLog:

* include/debug/helper_functions.h (__gnu_debug::__can_advance):
Declare as _GLIBCXX20_CONSTEXPR.
* include/debug/safe_iterator.h (__gnu_debug::__can_advance):
Define as _GLIBCXX20_CONSTEXPR, and return true for constexpr
evaluation.
(__gnu_debug::__base): Define as _GLIBCXX20_CONSTEXPR.
libstdc++-v3/include/debug/helper_functions.h
libstdc++-v3/include/debug/safe_iterator.h