[PATCH] libstdc++: Make join_view::_Iterator::_M_get_inner noexcept [PR121804]
Tomasz Kaminski
tkaminsk@redhat.com
Fri Sep 5 14:45:09 GMT 2025
On Fri, Sep 5, 2025 at 4:28 PM Patrick Palka <ppalka@redhat.com> wrote:
> Tested on x86_64-pc-linux-gnu, does this look OK for trunk?
>
Yes, I have seen bugzilla today, and this looks like an obvious fix.
>
> -- >8 --
>
> 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.
>
> libstdc++-v3/ChangeLog:
>
> * include/std/ranges (join_view::_Iterator::_M_get_inner):
> Mark noexcept.
> * testsuite/std/ranges/adaptors/join.cc (test16): New test.
> ---
> libstdc++-v3/include/std/ranges | 4 ++--
> libstdc++-v3/testsuite/std/ranges/adaptors/join.cc | 11 +++++++++++
> 2 files changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/libstdc++-v3/include/std/ranges
> b/libstdc++-v3/include/std/ranges
> index bae50d06ca81..f493da56203b 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 a9395b489919..50b8e355f904 100644
> --- a/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
> +++ b/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
> @@ -240,6 +240,16 @@ 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)));
> +}
> +
> int
> main()
> {
> @@ -258,4 +268,5 @@ main()
> test13();
> test14();
> test15();
> + test16();
> }
> --
> 2.51.0.167.g6ad8021821
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://gcc.gnu.org/pipermail/libstdc++/attachments/20250905/f14b04ef/attachment.htm>
More information about the Libstdc++
mailing list