This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[v3] DR 756 changes


Hi,

tested x86_64-linux, committed to mainline.

Paolo.

//////////////
2007-10-31  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_queue.h (queue<>::push(value_type&&)): Replace
	with "emplace" version per DR 756.
	(priority_queue<>::push(value_type&&)): Likewise.
	* include/bits/stl_stack.h (stack<>::push(value_type&&)): Likewise.
Index: include/bits/stl_queue.h
===================================================================
--- include/bits/stl_queue.h	(revision 129768)
+++ include/bits/stl_queue.h	(working copy)
@@ -220,14 +220,16 @@
        *  to it.  The time complexity of the operation depends on the
        *  underlying sequence.
        */
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
       void
       push(const value_type& __x)
       { c.push_back(__x); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-      void
-      push(value_type&& __x)
-      { c.push_back(std::move(__x)); }
+#else
+      // NB: DR 756.
+      template<typename... _Args>
+        void
+        push(_Args&&... __args)
+	{ c.push_back(std::forward<_Args>(__args)...); }
 #endif
 
       /**
@@ -507,20 +509,22 @@
        *  The time complexity of the operation depends on the underlying
        *  sequence.
        */
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
       void
       push(const value_type& __x)
       {
 	c.push_back(__x);
 	std::push_heap(c.begin(), c.end(), comp);
       }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-      void
-      push(value_type&& __x)
-      {
-	c.push_back(std::move(__x));
-	std::push_heap(c.begin(), c.end(), comp);
-      }
+#else
+      // NB: DR 756.
+      template<typename... _Args>
+        void
+        push(_Args&&... __args)
+	{ 
+	  c.push_back(std::forward<_Args>(__args)...);
+	  std::push_heap(c.begin(), c.end(), comp);
+	}
 #endif
 
       /**
Index: include/bits/stl_stack.h
===================================================================
--- include/bits/stl_stack.h	(revision 129768)
+++ include/bits/stl_stack.h	(working copy)
@@ -184,14 +184,16 @@
        *  to it.  The time complexity of the operation depends on the
        *  underlying sequence.
        */
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
       void
       push(const value_type& __x)
       { c.push_back(__x); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-      void
-      push(value_type&& __x)
-      { c.push_back(std::move(__x)); }
+#else
+      // NB: DR 756.
+      template<typename... _Args>
+        void
+        push(_Args&&... __args)
+	{ c.push_back(std::forward<_Args>(__args)...); }
 #endif
 
       /**

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]