diff options
author | Patrick Palka <ppalka@redhat.com> | 2025-09-05 13:14:16 -0400 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2025-09-05 13:14:16 -0400 |
commit | 8e971d665a9922a73de3a37ec8e04aea975e0993 (patch) | |
tree | 49b57b069dd596cf01ba8a0a7b9c5844658dffb0 | |
parent | dc20fa683d8cd46cc73407de1a24f1a2875102c5 (diff) | |
download | gcc-8e971d665a9922a73de3a37ec8e04aea975e0993.zip gcc-8e971d665a9922a73de3a37ec8e04aea975e0993.tar.gz gcc-8e971d665a9922a73de3a37ec8e04aea975e0993.tar.bz2 |
libstdc++: Make join_view::_Iterator::_M_get_inner noexcept [PR121804]
Since this helper (added in r16-3576-g7f7f1878eedd80) is used in the
noexcept-spec of iter_move and iter_swap, it in turn needs an accurate
noexcept-spec.
PR libstdc++/121804
libstdc++-v3/ChangeLog:
* include/std/ranges (join_view::_Iterator::_M_get_inner):
Mark noexcept.
* testsuite/std/ranges/adaptors/join.cc (test16): New test.
Reviewed-by: Tomasz KamiĆski <tkaminsk@redhat.com>
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
-rw-r--r-- | libstdc++-v3/include/std/ranges | 4 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/std/ranges/adaptors/join.cc | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges index bae50d0..f493da5 100644 --- a/libstdc++-v3/include/std/ranges +++ b/libstdc++-v3/include/std/ranges @@ -2935,7 +2935,7 @@ namespace views::__adaptor } constexpr _Inner_iter& - _M_get_inner() + _M_get_inner() noexcept { if constexpr (forward_iterator<_Inner_iter>) return _M_inner; @@ -2944,7 +2944,7 @@ namespace views::__adaptor } constexpr const _Inner_iter& - _M_get_inner() const + _M_get_inner() const noexcept { if constexpr (forward_iterator<_Inner_iter>) return _M_inner; diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc index a9395b4..db77490 100644 --- a/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc +++ b/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc @@ -240,6 +240,17 @@ test15() constexpr decltype(views::join(views::single(views::single(0))).begin()) it; } +void +test16() +{ + // PR libstdc++/121804 - join_view::iterator::_M_get_inner should be noexcept + std::vector<std::vector<int>> vv; + ranges::join_view j{vv}; + auto jit = j.begin(); + static_assert(noexcept(ranges::iter_move(jit))); + static_assert(noexcept(ranges::iter_swap(jit, jit))); +} + int main() { @@ -258,4 +269,5 @@ main() test13(); test14(); test15(); + test16(); } |