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