On Mon, 15 Sep 2025, Jonathan Wakely wrote:
> The _GLIBCXX_MAKE_MOVE_ITERATOR macro is needed for code that needs to
> compile as C++98, where it just produces the original iterator. In
> std::uninitialized_move and std::uninitialized_move_n we can just call
> std::make_move_iterator directly.
>
> libstdc++-v3/ChangeLog:
>
> * include/bits/stl_uninitialized.h (uninitialized_move)
> (uninitialized_move_n): Replace _GLIBCXX_MAKE_MOVE_ITERATOR with
> std::make_move_iterator.
LGTM
> ---
>
> Testing now on powerpc64le-linux.
>
> libstdc++-v3/include/bits/stl_uninitialized.h | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/libstdc++-v3/include/bits/stl_uninitialized.h
> b/libstdc++-v3/include/bits/stl_uninitialized.h
> index 351c3a17457f..0398b65fa140 100644
> --- a/libstdc++-v3/include/bits/stl_uninitialized.h
> +++ b/libstdc++-v3/include/bits/stl_uninitialized.h
> @@ -1265,9 +1265,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> uninitialized_move(_InputIterator __first, _InputIterator __last,
> _ForwardIterator __result)
> {
> - return std::uninitialized_copy
> - (_GLIBCXX_MAKE_MOVE_ITERATOR(__first),
> - _GLIBCXX_MAKE_MOVE_ITERATOR(__last), __result);
> + return std::uninitialized_copy(std::make_move_iterator(__first),
> + std::make_move_iterator(__last),
> + __result);
> }
>
> /**
> @@ -1284,9 +1284,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> uninitialized_move_n(_InputIterator __first, _Size __count,
> _ForwardIterator __result)
> {
> - auto __res = std::__uninitialized_copy_n_pair
> - (_GLIBCXX_MAKE_MOVE_ITERATOR(__first),
> - __count, __result);
> + auto __res
> + = std::__uninitialized_copy_n_pair(std::make_move_iterator(__first),
> + __count, __result);
> return {__res.first.base(), __res.second};
> }
> #endif // __glibcxx_raw_memory_algorithms
> --
> 2.51.0
>
>