libstdc++: Do not use _GLIBCXX_MAKE_MOVE_ITERATOR for C++17

Message ID 20250915140059.2451302-1-jwakely@redhat.com
State Committed
Commit 0810be83c1a9c6789920fcb0a4d98a3ddb64dd74
Headers
Series libstdc++: Do not use _GLIBCXX_MAKE_MOVE_ITERATOR for C++17 |

Commit Message

Jonathan Wakely Sept. 15, 2025, 1:59 p.m. UTC
  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.
---

Testing now on powerpc64le-linux.

 libstdc++-v3/include/bits/stl_uninitialized.h | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
  

Comments

Patrick Palka Sept. 15, 2025, 2:32 p.m. UTC | #1
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
> 
>
  

Patch

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