On Fri, 5 Sept 2025 at 15:28, Patrick Palka <ppa...@redhat.com> wrote:
>
> Tested on x86_64-pc-linux-gnu, does this look OK for trunk?

OK thanks


>
> -- >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
>

Reply via email to