xref: /aosp_15_r20/external/clang/www/libstdc++4.4-clang0x.patch (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin LiThis patch was generated from the headers installed by MacPorts
2*67e74705SXin Ligcc-4.4 on OS X 10.6.  You can apply it there with
3*67e74705SXin Li`cd /opt/local/include/gcc44/c++ ; sudo patch -p1 <this_patch`, or similar
4*67e74705SXin Lion other operating systems.  Mail cfe-dev if you find other problems in the
5*67e74705SXin Listandard headers.
6*67e74705SXin Li
7*67e74705SXin LiThis patch is offered under the same modified GPLv3 as libstdc++-4.4.
8*67e74705SXin Li
9*67e74705SXin Lidiff -ur a/bits/forward_list.h b/bits/forward_list.h
10*67e74705SXin Li--- a/bits/forward_list.h	2011-03-15 14:49:05.000000000 -0700
11*67e74705SXin Li+++ b/bits/forward_list.h	2011-05-02 23:51:33.000000000 -0700
12*67e74705SXin Li@@ -983,7 +983,7 @@
13*67e74705SXin Li        *  function.
14*67e74705SXin Li        */
15*67e74705SXin Li       void
16*67e74705SXin Li-      swap(forward_list&& __list)
17*67e74705SXin Li+      swap(forward_list& __list)
18*67e74705SXin Li       { _Node_base::swap(this->_M_impl._M_head, __list._M_impl._M_head); }
19*67e74705SXin Li
20*67e74705SXin Li       /**
21*67e74705SXin Lidiff -ur a/bits/move.h b/bits/move.h
22*67e74705SXin Li--- a/bits/move.h	2011-03-15 14:49:05.000000000 -0700
23*67e74705SXin Li+++ b/bits/move.h	2011-03-29 10:33:39.000000000 -0700
24*67e74705SXin Li@@ -48,13 +48,35 @@
25*67e74705SXin Li
26*67e74705SXin Li   template<typename _Tp>
27*67e74705SXin Li     inline _Tp&&
28*67e74705SXin Li-    forward(typename std::identity<_Tp>::type&& __t)
29*67e74705SXin Li+    forward(typename std::remove_reference<_Tp>::type& __t)
30*67e74705SXin Li+#ifdef __clang__
31*67e74705SXin Li+    { return static_cast<_Tp&&>(__t); }
32*67e74705SXin Li+#else
33*67e74705SXin Li     { return __t; }
34*67e74705SXin Li+#endif
35*67e74705SXin Li+
36*67e74705SXin Li+  template<typename _Tp>
37*67e74705SXin Li+    inline _Tp&&
38*67e74705SXin Li+    forward(typename std::remove_reference<_Tp>::type&& __t)
39*67e74705SXin Li+    {
40*67e74705SXin Li+#ifdef __clang__
41*67e74705SXin Li+      static_assert(!std::is_lvalue_reference<_Tp>::value,
42*67e74705SXin Li+                    "Can't instantiate this forward() with an"
43*67e74705SXin Li+                    " lvalue reference type.");
44*67e74705SXin Li+      return static_cast<_Tp&&>(__t);
45*67e74705SXin Li+#else
46*67e74705SXin Li+      return __t;
47*67e74705SXin Li+#endif
48*67e74705SXin Li+    }
49*67e74705SXin Li
50*67e74705SXin Li   template<typename _Tp>
51*67e74705SXin Li     inline typename std::remove_reference<_Tp>::type&&
52*67e74705SXin Li     move(_Tp&& __t)
53*67e74705SXin Li+#ifdef __clang__
54*67e74705SXin Li+    { return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); }
55*67e74705SXin Li+#else
56*67e74705SXin Li     { return __t; }
57*67e74705SXin Li+#endif
58*67e74705SXin Li
59*67e74705SXin Li _GLIBCXX_END_NAMESPACE
60*67e74705SXin Li
61*67e74705SXin Lidiff -ur a/bits/shared_ptr.h b/bits/shared_ptr.h
62*67e74705SXin Li--- a/bits/shared_ptr.h	2011-03-15 14:49:05.000000000 -0700
63*67e74705SXin Li+++ b/bits/shared_ptr.h	2011-03-31 16:40:45.000000000 -0700
64*67e74705SXin Li@@ -833,7 +833,7 @@
65*67e74705SXin Li       { return _M_refcount._M_get_use_count(); }
66*67e74705SXin Li
67*67e74705SXin Li       void
68*67e74705SXin Li-      swap(__shared_ptr<_Tp, _Lp>&& __other) // never throws
69*67e74705SXin Li+      swap(__shared_ptr<_Tp, _Lp>& __other) // never throws
70*67e74705SXin Li       {
71*67e74705SXin Li 	std::swap(_M_ptr, __other._M_ptr);
72*67e74705SXin Li 	_M_refcount._M_swap(__other._M_refcount);
73*67e74705SXin Li@@ -943,16 +943,6 @@
74*67e74705SXin Li     swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b)
75*67e74705SXin Li     { __a.swap(__b); }
76*67e74705SXin Li
77*67e74705SXin Li-  template<typename _Tp, _Lock_policy _Lp>
78*67e74705SXin Li-    inline void
79*67e74705SXin Li-    swap(__shared_ptr<_Tp, _Lp>&& __a, __shared_ptr<_Tp, _Lp>& __b)
80*67e74705SXin Li-    { __a.swap(__b); }
81*67e74705SXin Li-
82*67e74705SXin Li-  template<typename _Tp, _Lock_policy _Lp>
83*67e74705SXin Li-    inline void
84*67e74705SXin Li-    swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>&& __b)
85*67e74705SXin Li-    { __a.swap(__b); }
86*67e74705SXin Li-
87*67e74705SXin Li   // 2.2.3.9 shared_ptr casts
88*67e74705SXin Li   /** @warning The seemingly equivalent
89*67e74705SXin Li    *           <code>shared_ptr<_Tp, _Lp>(static_cast<_Tp*>(__r.get()))</code>
90*67e74705SXin Li@@ -1372,16 +1362,6 @@
91*67e74705SXin Li     swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b)
92*67e74705SXin Li     { __a.swap(__b); }
93*67e74705SXin Li
94*67e74705SXin Li-  template<typename _Tp>
95*67e74705SXin Li-    inline void
96*67e74705SXin Li-    swap(shared_ptr<_Tp>&& __a, shared_ptr<_Tp>& __b)
97*67e74705SXin Li-    { __a.swap(__b); }
98*67e74705SXin Li-
99*67e74705SXin Li-  template<typename _Tp>
100*67e74705SXin Li-    inline void
101*67e74705SXin Li-    swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>&& __b)
102*67e74705SXin Li-    { __a.swap(__b); }
103*67e74705SXin Li-
104*67e74705SXin Li   // 20.8.13.2.10 shared_ptr casts.
105*67e74705SXin Li   template<typename _Tp, typename _Tp1>
106*67e74705SXin Li     inline shared_ptr<_Tp>
107*67e74705SXin Lidiff -ur a/bits/stl_bvector.h b/bits/stl_bvector.h
108*67e74705SXin Li--- a/bits/stl_bvector.h	2011-03-15 14:49:05.000000000 -0700
109*67e74705SXin Li+++ b/bits/stl_bvector.h	2011-05-02 23:34:46.000000000 -0700
110*67e74705SXin Li@@ -743,11 +743,7 @@
111*67e74705SXin Li     }
112*67e74705SXin Li
113*67e74705SXin Li     void
114*67e74705SXin Li-#ifdef __GXX_EXPERIMENTAL_CXX0X__
115*67e74705SXin Li-    swap(vector&& __x)
116*67e74705SXin Li-#else
117*67e74705SXin Li     swap(vector& __x)
118*67e74705SXin Li-#endif
119*67e74705SXin Li     {
120*67e74705SXin Li       std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
121*67e74705SXin Li       std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
122*67e74705SXin Lidiff -ur a/bits/stl_deque.h b/bits/stl_deque.h
123*67e74705SXin Li--- a/bits/stl_deque.h	2011-03-15 14:49:05.000000000 -0700
124*67e74705SXin Li+++ b/bits/stl_deque.h	2011-03-29 10:33:39.000000000 -0700
125*67e74705SXin Li@@ -1395,11 +1395,7 @@
126*67e74705SXin Li        *  std::swap(d1,d2) will feed to this function.
127*67e74705SXin Li        */
128*67e74705SXin Li       void
129*67e74705SXin Li-#ifdef __GXX_EXPERIMENTAL_CXX0X__
130*67e74705SXin Li-      swap(deque&& __x)
131*67e74705SXin Li-#else
132*67e74705SXin Li       swap(deque& __x)
133*67e74705SXin Li-#endif
134*67e74705SXin Li       {
135*67e74705SXin Li 	std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
136*67e74705SXin Li 	std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
137*67e74705SXin Lidiff -ur a/bits/stl_iterator.h b/bits/stl_iterator.h
138*67e74705SXin Li--- a/bits/stl_iterator.h	2011-03-15 14:49:05.000000000 -0700
139*67e74705SXin Li+++ b/bits/stl_iterator.h	2011-03-29 10:33:39.000000000 -0700
140*67e74705SXin Li@@ -913,7 +913,7 @@
141*67e74705SXin Li
142*67e74705SXin Li       reference
143*67e74705SXin Li       operator*() const
144*67e74705SXin Li-      { return *_M_current; }
145*67e74705SXin Li+      { return std::move(*_M_current); }
146*67e74705SXin Li
147*67e74705SXin Li       pointer
148*67e74705SXin Li       operator->() const
149*67e74705SXin Lidiff -ur a/bits/stl_list.h b/bits/stl_list.h
150*67e74705SXin Li--- a/bits/stl_list.h	2011-03-15 14:49:05.000000000 -0700
151*67e74705SXin Li+++ b/bits/stl_list.h	2011-03-29 10:33:39.000000000 -0700
152*67e74705SXin Li@@ -1106,11 +1106,7 @@
153*67e74705SXin Li        *  function.
154*67e74705SXin Li        */
155*67e74705SXin Li       void
156*67e74705SXin Li-#ifdef __GXX_EXPERIMENTAL_CXX0X__
157*67e74705SXin Li-      swap(list&& __x)
158*67e74705SXin Li-#else
159*67e74705SXin Li       swap(list& __x)
160*67e74705SXin Li-#endif
161*67e74705SXin Li       {
162*67e74705SXin Li 	_List_node_base::swap(this->_M_impl._M_node, __x._M_impl._M_node);
163*67e74705SXin Li
164*67e74705SXin Li@@ -1160,6 +1156,12 @@
165*67e74705SXin Li 	  }
166*67e74705SXin Li       }
167*67e74705SXin Li
168*67e74705SXin Li+#ifdef __GXX_EXPERIMENTAL_CXX0X__
169*67e74705SXin Li+      void
170*67e74705SXin Li+      splice(iterator __position, list& __x)
171*67e74705SXin Li+      { splice(__position, std::move(__x)); }
172*67e74705SXin Li+#endif
173*67e74705SXin Li+
174*67e74705SXin Li       /**
175*67e74705SXin Li        *  @brief  Insert element from another %list.
176*67e74705SXin Li        *  @param  position  Iterator referencing the element to insert before.
177*67e74705SXin Li@@ -1187,6 +1189,12 @@
178*67e74705SXin Li 	this->_M_transfer(__position, __i, __j);
179*67e74705SXin Li       }
180*67e74705SXin Li
181*67e74705SXin Li+#ifdef __GXX_EXPERIMENTAL_CXX0X__
182*67e74705SXin Li+      void
183*67e74705SXin Li+      splice(iterator __position, list& __x, iterator __i)
184*67e74705SXin Li+      { splice(__position, std::move(__x), __i); }
185*67e74705SXin Li+#endif
186*67e74705SXin Li+
187*67e74705SXin Li       /**
188*67e74705SXin Li        *  @brief  Insert range from another %list.
189*67e74705SXin Li        *  @param  position  Iterator referencing the element to insert before.
190*67e74705SXin Li@@ -1217,6 +1225,13 @@
191*67e74705SXin Li 	  }
192*67e74705SXin Li       }
193*67e74705SXin Li
194*67e74705SXin Li+#ifdef __GXX_EXPERIMENTAL_CXX0X__
195*67e74705SXin Li+      void
196*67e74705SXin Li+      splice(iterator __position, list& __x, iterator __first,
197*67e74705SXin Li+	     iterator __last)
198*67e74705SXin Li+      { splice(__position, std::move(__x), __first, __last); }
199*67e74705SXin Li+#endif
200*67e74705SXin Li+
201*67e74705SXin Li       /**
202*67e74705SXin Li        *  @brief  Remove all elements equal to value.
203*67e74705SXin Li        *  @param  value  The value to remove.
204*67e74705SXin Li@@ -1287,6 +1302,10 @@
205*67e74705SXin Li       void
206*67e74705SXin Li #ifdef __GXX_EXPERIMENTAL_CXX0X__
207*67e74705SXin Li       merge(list&& __x);
208*67e74705SXin Li+
209*67e74705SXin Li+      void
210*67e74705SXin Li+      merge(list& __x)
211*67e74705SXin Li+      { merge(std::move(__x)); }
212*67e74705SXin Li #else
213*67e74705SXin Li       merge(list& __x);
214*67e74705SXin Li #endif
215*67e74705SXin Li@@ -1307,6 +1326,11 @@
216*67e74705SXin Li         void
217*67e74705SXin Li #ifdef __GXX_EXPERIMENTAL_CXX0X__
218*67e74705SXin Li         merge(list&&, _StrictWeakOrdering);
219*67e74705SXin Li+
220*67e74705SXin Li+      template<typename _StrictWeakOrdering>
221*67e74705SXin Li+        void
222*67e74705SXin Li+        merge(list& __l, _StrictWeakOrdering __comp)
223*67e74705SXin Li+        { merge(std::move(__l), __comp); }
224*67e74705SXin Li #else
225*67e74705SXin Li         merge(list&, _StrictWeakOrdering);
226*67e74705SXin Li #endif
227*67e74705SXin Lidiff -ur a/bits/stl_map.h b/bits/stl_map.h
228*67e74705SXin Li--- a/bits/stl_map.h	2011-03-15 14:49:05.000000000 -0700
229*67e74705SXin Li+++ b/bits/stl_map.h	2011-03-29 10:33:39.000000000 -0700
230*67e74705SXin Li@@ -608,11 +608,7 @@
231*67e74705SXin Li        *  that std::swap(m1,m2) will feed to this function.
232*67e74705SXin Li        */
233*67e74705SXin Li       void
234*67e74705SXin Li-#ifdef __GXX_EXPERIMENTAL_CXX0X__
235*67e74705SXin Li-      swap(map&& __x)
236*67e74705SXin Li-#else
237*67e74705SXin Li       swap(map& __x)
238*67e74705SXin Li-#endif
239*67e74705SXin Li       { _M_t.swap(__x._M_t); }
240*67e74705SXin Li
241*67e74705SXin Li       /**
242*67e74705SXin Lidiff -ur a/bits/stl_multimap.h b/bits/stl_multimap.h
243*67e74705SXin Li--- a/bits/stl_multimap.h	2011-03-15 14:49:05.000000000 -0700
244*67e74705SXin Li+++ b/bits/stl_multimap.h	2011-03-29 10:33:39.000000000 -0700
245*67e74705SXin Li@@ -544,11 +544,7 @@
246*67e74705SXin Li        *  std::swap(m1,m2) will feed to this function.
247*67e74705SXin Li        */
248*67e74705SXin Li       void
249*67e74705SXin Li-#ifdef __GXX_EXPERIMENTAL_CXX0X__
250*67e74705SXin Li-      swap(multimap&& __x)
251*67e74705SXin Li-#else
252*67e74705SXin Li       swap(multimap& __x)
253*67e74705SXin Li-#endif
254*67e74705SXin Li       { _M_t.swap(__x._M_t); }
255*67e74705SXin Li
256*67e74705SXin Li       /**
257*67e74705SXin Lidiff -ur a/bits/stl_multiset.h b/bits/stl_multiset.h
258*67e74705SXin Li--- a/bits/stl_multiset.h	2011-03-15 14:49:05.000000000 -0700
259*67e74705SXin Li+++ b/bits/stl_multiset.h	2011-03-29 10:33:39.000000000 -0700
260*67e74705SXin Li@@ -376,11 +376,7 @@
261*67e74705SXin Li        *  std::swap(s1,s2) will feed to this function.
262*67e74705SXin Li        */
263*67e74705SXin Li       void
264*67e74705SXin Li-#ifdef __GXX_EXPERIMENTAL_CXX0X__
265*67e74705SXin Li-      swap(multiset&& __x)
266*67e74705SXin Li-#else
267*67e74705SXin Li       swap(multiset& __x)
268*67e74705SXin Li-#endif
269*67e74705SXin Li       { _M_t.swap(__x._M_t); }
270*67e74705SXin Li
271*67e74705SXin Li       // insert/erase
272*67e74705SXin Lidiff -ur a/bits/stl_pair.h b/bits/stl_pair.h
273*67e74705SXin Li--- a/bits/stl_pair.h	2011-03-15 14:49:05.000000000 -0700
274*67e74705SXin Li+++ b/bits/stl_pair.h	2011-03-29 10:33:39.000000000 -0700
275*67e74705SXin Li@@ -84,10 +84,21 @@
276*67e74705SXin Li       : first(__a), second(__b) { }
277*67e74705SXin Li
278*67e74705SXin Li #ifdef __GXX_EXPERIMENTAL_CXX0X__
279*67e74705SXin Li-      template<class _U1, class _U2>
280*67e74705SXin Li+      template<class _U1, class = typename
281*67e74705SXin Li+	       std::enable_if<std::is_convertible<_U1, _T1>::value>::type>
282*67e74705SXin Li+	pair(_U1&& __x, const _T2& __y)
283*67e74705SXin Li+	: first(std::forward<_U1>(__x)), second(__y) { }
284*67e74705SXin Li+
285*67e74705SXin Li+      template<class _U2, class = typename
286*67e74705SXin Li+	       std::enable_if<std::is_convertible<_U2, _T2>::value>::type>
287*67e74705SXin Li+	pair(const _T1& __x, _U2&& __y)
288*67e74705SXin Li+	: first(__x), second(std::forward<_U2>(__y)) { }
289*67e74705SXin Li+
290*67e74705SXin Li+      template<class _U1, class _U2, class = typename
291*67e74705SXin Li+	       std::enable_if<std::is_convertible<_U1, _T1>::value
292*67e74705SXin Li+			      && std::is_convertible<_U2, _T2>::value>::type>
293*67e74705SXin Li         pair(_U1&& __x, _U2&& __y)
294*67e74705SXin Li-	: first(std::forward<_U1>(__x)),
295*67e74705SXin Li-	  second(std::forward<_U2>(__y)) { }
296*67e74705SXin Li+	: first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
297*67e74705SXin Li
298*67e74705SXin Li       pair(pair&& __p)
299*67e74705SXin Li       : first(std::move(__p.first)),
300*67e74705SXin Li@@ -107,11 +118,19 @@
301*67e74705SXin Li 	  second(std::move(__p.second)) { }
302*67e74705SXin Li
303*67e74705SXin Li       // http://gcc.gnu.org/ml/libstdc++/2007-08/msg00052.html
304*67e74705SXin Li+
305*67e74705SXin Li+#if 0
306*67e74705SXin Li+      // This constructor is incompatible with libstdc++-4.6, and it
307*67e74705SXin Li+      // interferes with passing NULL pointers to the 2-argument
308*67e74705SXin Li+      // constructors, so we disable it.  map::emplace isn't
309*67e74705SXin Li+      // implemented in libstdc++-4.4 anyway, and that's what this
310*67e74705SXin Li+      // constructor was here for.
311*67e74705SXin Li       template<class _U1, class _Arg0, class... _Args>
312*67e74705SXin Li         pair(_U1&& __x, _Arg0&& __arg0, _Args&&... __args)
313*67e74705SXin Li 	: first(std::forward<_U1>(__x)),
314*67e74705SXin Li 	  second(std::forward<_Arg0>(__arg0),
315*67e74705SXin Li 		 std::forward<_Args>(__args)...) { }
316*67e74705SXin Li+#endif
317*67e74705SXin Li
318*67e74705SXin Li       pair&
319*67e74705SXin Li       operator=(pair&& __p)
320*67e74705SXin Li@@ -131,7 +150,7 @@
321*67e74705SXin Li 	}
322*67e74705SXin Li
323*67e74705SXin Li       void
324*67e74705SXin Li-      swap(pair&& __p)
325*67e74705SXin Li+      swap(pair& __p)
326*67e74705SXin Li       {
327*67e74705SXin Li 	using std::swap;
328*67e74705SXin Li 	swap(first, __p.first);
329*67e74705SXin Lidiff -ur a/bits/stl_queue.h b/bits/stl_queue.h
330*67e74705SXin Li--- a/bits/stl_queue.h	2011-03-15 14:49:05.000000000 -0700
331*67e74705SXin Li+++ b/bits/stl_queue.h	2011-05-02 23:36:15.000000000 -0700
332*67e74705SXin Li@@ -249,7 +249,7 @@
333*67e74705SXin Li
334*67e74705SXin Li #ifdef __GXX_EXPERIMENTAL_CXX0X__
335*67e74705SXin Li       void
336*67e74705SXin Li-      swap(queue&& __q)
337*67e74705SXin Li+      swap(queue& __q)
338*67e74705SXin Li       { c.swap(__q.c); }
339*67e74705SXin Li #endif
340*67e74705SXin Li     };
341*67e74705SXin Li@@ -550,7 +550,7 @@
342*67e74705SXin Li
343*67e74705SXin Li #ifdef __GXX_EXPERIMENTAL_CXX0X__
344*67e74705SXin Li       void
345*67e74705SXin Li-      swap(priority_queue&& __pq)
346*67e74705SXin Li+      swap(priority_queue& __pq)
347*67e74705SXin Li       {
348*67e74705SXin Li 	using std::swap;
349*67e74705SXin Li 	c.swap(__pq.c);
350*67e74705SXin Lidiff -ur a/bits/stl_set.h b/bits/stl_set.h
351*67e74705SXin Li--- a/bits/stl_set.h	2011-03-15 14:49:05.000000000 -0700
352*67e74705SXin Li+++ b/bits/stl_set.h	2011-03-29 10:33:39.000000000 -0700
353*67e74705SXin Li@@ -383,11 +383,7 @@
354*67e74705SXin Li        *  std::swap(s1,s2) will feed to this function.
355*67e74705SXin Li        */
356*67e74705SXin Li       void
357*67e74705SXin Li-#ifdef __GXX_EXPERIMENTAL_CXX0X__
358*67e74705SXin Li-      swap(set&& __x)
359*67e74705SXin Li-#else
360*67e74705SXin Li       swap(set& __x)
361*67e74705SXin Li-#endif
362*67e74705SXin Li       { _M_t.swap(__x._M_t); }
363*67e74705SXin Li
364*67e74705SXin Li       // insert/erase
365*67e74705SXin Lidiff -ur a/bits/stl_stack.h b/bits/stl_stack.h
366*67e74705SXin Li--- a/bits/stl_stack.h	2011-03-15 14:49:05.000000000 -0700
367*67e74705SXin Li+++ b/bits/stl_stack.h	2011-05-02 23:36:36.000000000 -0700
368*67e74705SXin Li@@ -213,7 +213,7 @@
369*67e74705SXin Li
370*67e74705SXin Li #ifdef __GXX_EXPERIMENTAL_CXX0X__
371*67e74705SXin Li       void
372*67e74705SXin Li-      swap(stack&& __s)
373*67e74705SXin Li+      swap(stack& __s)
374*67e74705SXin Li       { c.swap(__s.c); }
375*67e74705SXin Li #endif
376*67e74705SXin Li     };
377*67e74705SXin Lidiff -ur a/bits/stl_tree.h b/bits/stl_tree.h
378*67e74705SXin Li--- a/bits/stl_tree.h	2011-03-15 14:49:05.000000000 -0700
379*67e74705SXin Li+++ b/bits/stl_tree.h	2011-03-29 10:33:39.000000000 -0700
380*67e74705SXin Li@@ -675,11 +675,7 @@
381*67e74705SXin Li       { return _M_get_Node_allocator().max_size(); }
382*67e74705SXin Li
383*67e74705SXin Li       void
384*67e74705SXin Li-#ifdef __GXX_EXPERIMENTAL_CXX0X__
385*67e74705SXin Li-      swap(_Rb_tree&& __t);
386*67e74705SXin Li-#else
387*67e74705SXin Li       swap(_Rb_tree& __t);
388*67e74705SXin Li-#endif
389*67e74705SXin Li
390*67e74705SXin Li       // Insert/erase.
391*67e74705SXin Li       pair<iterator, bool>
392*67e74705SXin Li@@ -1104,11 +1100,7 @@
393*67e74705SXin Li            typename _Compare, typename _Alloc>
394*67e74705SXin Li     void
395*67e74705SXin Li     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
396*67e74705SXin Li-#ifdef __GXX_EXPERIMENTAL_CXX0X__
397*67e74705SXin Li-    swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&& __t)
398*67e74705SXin Li-#else
399*67e74705SXin Li     swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t)
400*67e74705SXin Li-#endif
401*67e74705SXin Li     {
402*67e74705SXin Li       if (_M_root() == 0)
403*67e74705SXin Li 	{
404*67e74705SXin Lidiff -ur a/bits/stl_vector.h b/bits/stl_vector.h
405*67e74705SXin Li--- a/bits/stl_vector.h	2011-03-15 14:49:05.000000000 -0700
406*67e74705SXin Li+++ b/bits/stl_vector.h	2011-03-29 10:33:39.000000000 -0700
407*67e74705SXin Li@@ -923,11 +923,7 @@
408*67e74705SXin Li        *  std::swap(v1,v2) will feed to this function.
409*67e74705SXin Li        */
410*67e74705SXin Li       void
411*67e74705SXin Li-#ifdef __GXX_EXPERIMENTAL_CXX0X__
412*67e74705SXin Li-      swap(vector&& __x)
413*67e74705SXin Li-#else
414*67e74705SXin Li       swap(vector& __x)
415*67e74705SXin Li-#endif
416*67e74705SXin Li       {
417*67e74705SXin Li 	std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
418*67e74705SXin Li 	std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
419*67e74705SXin Lidiff -ur a/bits/unique_ptr.h b/bits/unique_ptr.h
420*67e74705SXin Li--- a/bits/unique_ptr.h	2011-03-15 14:49:05.000000000 -0700
421*67e74705SXin Li+++ b/bits/unique_ptr.h	2011-03-31 16:40:45.000000000 -0700
422*67e74705SXin Li@@ -204,7 +204,7 @@
423*67e74705SXin Li       }
424*67e74705SXin Li
425*67e74705SXin Li       void
426*67e74705SXin Li-      swap(unique_ptr&& __u)
427*67e74705SXin Li+      swap(unique_ptr& __u)
428*67e74705SXin Li       {
429*67e74705SXin Li 	using std::swap;
430*67e74705SXin Li 	swap(_M_t, __u._M_t);
431*67e74705SXin Li@@ -350,7 +350,7 @@
432*67e74705SXin Li         void reset(_Up) = delete;
433*67e74705SXin Li
434*67e74705SXin Li       void
435*67e74705SXin Li-      swap(unique_ptr&& __u)
436*67e74705SXin Li+      swap(unique_ptr& __u)
437*67e74705SXin Li       {
438*67e74705SXin Li 	using std::swap;
439*67e74705SXin Li 	swap(_M_t, __u._M_t);
440*67e74705SXin Li@@ -389,18 +389,6 @@
441*67e74705SXin Li 	 unique_ptr<_Tp, _Tp_Deleter>& __y)
442*67e74705SXin Li     { __x.swap(__y); }
443*67e74705SXin Li
444*67e74705SXin Li-  template<typename _Tp, typename _Tp_Deleter>
445*67e74705SXin Li-    inline void
446*67e74705SXin Li-    swap(unique_ptr<_Tp, _Tp_Deleter>&& __x,
447*67e74705SXin Li-	 unique_ptr<_Tp, _Tp_Deleter>& __y)
448*67e74705SXin Li-    { __x.swap(__y); }
449*67e74705SXin Li-
450*67e74705SXin Li-  template<typename _Tp, typename _Tp_Deleter>
451*67e74705SXin Li-    inline void
452*67e74705SXin Li-    swap(unique_ptr<_Tp, _Tp_Deleter>& __x,
453*67e74705SXin Li-	 unique_ptr<_Tp, _Tp_Deleter>&& __y)
454*67e74705SXin Li-    { __x.swap(__y); }
455*67e74705SXin Li-
456*67e74705SXin Li   template<typename _Tp, typename _Tp_Deleter,
457*67e74705SXin Li 	   typename _Up, typename _Up_Deleter>
458*67e74705SXin Li     inline bool
459*67e74705SXin Lidiff -ur a/exception_ptr.h b/exception_ptr.h
460*67e74705SXin Li--- a/exception_ptr.h	2011-03-15 14:49:08.000000000 -0700
461*67e74705SXin Li+++ b/exception_ptr.h	2011-03-29 10:33:39.000000000 -0700
462*67e74705SXin Li@@ -140,7 +140,7 @@
463*67e74705SXin Li       friend bool
464*67e74705SXin Li       operator==(const exception_ptr&, const exception_ptr&) throw();
465*67e74705SXin Li
466*67e74705SXin Li-      const type_info*
467*67e74705SXin Li+      const class type_info*
468*67e74705SXin Li       __cxa_exception_type() const throw();
469*67e74705SXin Li     };
470*67e74705SXin Li
471*67e74705SXin Lidiff -ur a/ext/algorithm b/ext/algorithm
472*67e74705SXin Li--- a/ext/algorithm	2011-03-15 14:49:05.000000000 -0700
473*67e74705SXin Li+++ b/ext/algorithm	2011-03-29 10:33:39.000000000 -0700
474*67e74705SXin Li@@ -423,6 +423,9 @@
475*67e74705SXin Li 			     __out_last - __out_first);
476*67e74705SXin Li     }
477*67e74705SXin Li
478*67e74705SXin Li+#ifdef __GXX_EXPERIMENTAL_CXX0X__
479*67e74705SXin Li+  using std::is_heap;
480*67e74705SXin Li+#else
481*67e74705SXin Li   /**
482*67e74705SXin Li    *  This is an SGI extension.
483*67e74705SXin Li    *  @ingroup SGIextensions
484*67e74705SXin Li@@ -462,6 +465,7 @@
485*67e74705SXin Li
486*67e74705SXin Li       return std::__is_heap(__first, __comp, __last - __first);
487*67e74705SXin Li     }
488*67e74705SXin Li+#endif
489*67e74705SXin Li
490*67e74705SXin Li   // is_sorted, a predicated testing whether a range is sorted in
491*67e74705SXin Li   // nondescending order.  This is an extension, not part of the C++
492*67e74705SXin Lidiff -ur a/ext/vstring.h b/ext/vstring.h
493*67e74705SXin Li--- a/ext/vstring.h	2011-03-15 14:49:05.000000000 -0700
494*67e74705SXin Li+++ b/ext/vstring.h	2011-03-29 10:33:39.000000000 -0700
495*67e74705SXin Li@@ -152,7 +152,7 @@
496*67e74705SXin Li        *  string.
497*67e74705SXin Li        */
498*67e74705SXin Li       __versa_string(__versa_string&& __str)
499*67e74705SXin Li-      : __vstring_base(std::forward<__vstring_base>(__str)) { }
500*67e74705SXin Li+      : __vstring_base(std::move(__str)) { }
501*67e74705SXin Li
502*67e74705SXin Li       /**
503*67e74705SXin Li        *  @brief  Construct string from an initializer list.
504*67e74705SXin Li@@ -1439,11 +1439,7 @@
505*67e74705SXin Li        *  constant time.
506*67e74705SXin Li       */
507*67e74705SXin Li       void
508*67e74705SXin Li-#ifdef __GXX_EXPERIMENTAL_CXX0X__
509*67e74705SXin Li-      swap(__versa_string&& __s)
510*67e74705SXin Li-#else
511*67e74705SXin Li       swap(__versa_string& __s)
512*67e74705SXin Li-#endif
513*67e74705SXin Li       { this->_M_swap(__s); }
514*67e74705SXin Li
515*67e74705SXin Li       // String operations:
516*67e74705SXin Lidiff -ur a/tr1_impl/hashtable b/tr1_impl/hashtable
517*67e74705SXin Li--- a/tr1_impl/hashtable	2011-03-15 14:49:07.000000000 -0700
518*67e74705SXin Li+++ b/tr1_impl/hashtable	2011-05-02 23:41:55.000000000 -0700
519*67e74705SXin Li@@ -225,11 +225,7 @@
520*67e74705SXin Li
521*67e74705SXin Li       ~_Hashtable();
522*67e74705SXin Li
523*67e74705SXin Li-#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
524*67e74705SXin Li-      void swap(_Hashtable&&);
525*67e74705SXin Li-#else
526*67e74705SXin Li       void swap(_Hashtable&);
527*67e74705SXin Li-#endif
528*67e74705SXin Li
529*67e74705SXin Li       // Basic container operations
530*67e74705SXin Li       iterator
531*67e74705SXin Li@@ -732,11 +728,7 @@
532*67e74705SXin Li     void
533*67e74705SXin Li     _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
534*67e74705SXin Li 	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
535*67e74705SXin Li-#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
536*67e74705SXin Li-    swap(_Hashtable&& __x)
537*67e74705SXin Li-#else
538*67e74705SXin Li     swap(_Hashtable& __x)
539*67e74705SXin Li-#endif
540*67e74705SXin Li     {
541*67e74705SXin Li       // The only base class with member variables is hash_code_base.  We
542*67e74705SXin Li       // define _Hash_code_base::_M_swap because different specializations
543*67e74705SXin Lidiff -ur a/tuple b/tuple
544*67e74705SXin Li--- a/tuple	2011-03-15 14:49:07.000000000 -0700
545*67e74705SXin Li+++ b/tuple	2011-05-02 23:33:23.000000000 -0700
546*67e74705SXin Li@@ -77,7 +77,7 @@
547*67e74705SXin Li       _Head&       _M_head()       { return *this; }
548*67e74705SXin Li       const _Head& _M_head() const { return *this; }
549*67e74705SXin Li
550*67e74705SXin Li-      void _M_swap_impl(_Head&&) { /* no-op */ }
551*67e74705SXin Li+      void _M_swap_impl(_Head&) { /* no-op */ }
552*67e74705SXin Li     };
553*67e74705SXin Li
554*67e74705SXin Li   template<std::size_t _Idx, typename _Head>
555*67e74705SXin Li@@ -97,7 +97,7 @@
556*67e74705SXin Li       const _Head& _M_head() const { return _M_head_impl; }
557*67e74705SXin Li
558*67e74705SXin Li       void
559*67e74705SXin Li-      _M_swap_impl(_Head&& __h)
560*67e74705SXin Li+      _M_swap_impl(_Head& __h)
561*67e74705SXin Li       {
562*67e74705SXin Li 	using std::swap;
563*67e74705SXin Li 	swap(__h, _M_head_impl);
564*67e74705SXin Li@@ -125,7 +125,7 @@
565*67e74705SXin Li     struct _Tuple_impl<_Idx>
566*67e74705SXin Li     {
567*67e74705SXin Li     protected:
568*67e74705SXin Li-      void _M_swap_impl(_Tuple_impl&&) { /* no-op */ }
569*67e74705SXin Li+      void _M_swap_impl(_Tuple_impl&) { /* no-op */ }
570*67e74705SXin Li     };
571*67e74705SXin Li
572*67e74705SXin Li   /**
573*67e74705SXin Li@@ -214,7 +214,7 @@
574*67e74705SXin Li
575*67e74705SXin Li     protected:
576*67e74705SXin Li       void
577*67e74705SXin Li-      _M_swap_impl(_Tuple_impl&& __in)
578*67e74705SXin Li+      _M_swap_impl(_Tuple_impl& __in)
579*67e74705SXin Li       {
580*67e74705SXin Li 	_Base::_M_swap_impl(__in._M_head());
581*67e74705SXin Li 	_Inherited::_M_swap_impl(__in._M_tail());
582*67e74705SXin Li@@ -292,7 +292,7 @@
583*67e74705SXin Li 	}
584*67e74705SXin Li
585*67e74705SXin Li       void
586*67e74705SXin Li-      swap(tuple&& __in)
587*67e74705SXin Li+      swap(tuple& __in)
588*67e74705SXin Li       { _Inherited::_M_swap_impl(__in); }
589*67e74705SXin Li     };
590*67e74705SXin Li
591*67e74705SXin Li@@ -301,7 +301,7 @@
592*67e74705SXin Li     class tuple<>
593*67e74705SXin Li     {
594*67e74705SXin Li     public:
595*67e74705SXin Li-      void swap(tuple&&) { /* no-op */ }
596*67e74705SXin Li+      void swap(tuple&) { /* no-op */ }
597*67e74705SXin Li     };
598*67e74705SXin Li
599*67e74705SXin Li   /// tuple (2-element), with construction and assignment from a pair.
600*67e74705SXin Li@@ -394,7 +394,7 @@
601*67e74705SXin Li 	}
602*67e74705SXin Li
603*67e74705SXin Li       void
604*67e74705SXin Li-      swap(tuple&& __in)
605*67e74705SXin Li+      swap(tuple& __in)
606*67e74705SXin Li       {
607*67e74705SXin Li 	using std::swap;
608*67e74705SXin Li 	swap(this->_M_head(), __in._M_head());
609