  
  _GLIBCXX_END_NAMESPACE
  
+diff -ur a/bits/shared_ptr.h b/bits/shared_ptr.h
+--- a/bits/shared_ptr.h	2011-03-15 14:49:05.000000000 -0700
++++ b/bits/shared_ptr.h	2011-03-31 16:40:45.000000000 -0700
+@@ -833,7 +833,7 @@
+       { return _M_refcount._M_get_use_count(); }
+ 
+       void
+-      swap(__shared_ptr<_Tp, _Lp>&& __other) // never throws
++      swap(__shared_ptr<_Tp, _Lp>& __other) // never throws
+       {
+ 	std::swap(_M_ptr, __other._M_ptr);
+ 	_M_refcount._M_swap(__other._M_refcount);
+@@ -943,16 +943,6 @@
+     swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b)
+     { __a.swap(__b); }
+ 
+-  template<typename _Tp, _Lock_policy _Lp>
+-    inline void
+-    swap(__shared_ptr<_Tp, _Lp>&& __a, __shared_ptr<_Tp, _Lp>& __b)
+-    { __a.swap(__b); }
+-
+-  template<typename _Tp, _Lock_policy _Lp>
+-    inline void
+-    swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>&& __b)
+-    { __a.swap(__b); }
+-
+   // 2.2.3.9 shared_ptr casts
+   /** @warning The seemingly equivalent
+    *           <code>shared_ptr<_Tp, _Lp>(static_cast<_Tp*>(__r.get()))</code>
+@@ -1372,16 +1362,6 @@
+     swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b)
+     { __a.swap(__b); }
+ 
+-  template<typename _Tp>
+-    inline void
+-    swap(shared_ptr<_Tp>&& __a, shared_ptr<_Tp>& __b)
+-    { __a.swap(__b); }
+-
+-  template<typename _Tp>
+-    inline void
+-    swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>&& __b)
+-    { __a.swap(__b); }
+-
+   // 20.8.13.2.10 shared_ptr casts.
+   template<typename _Tp, typename _Tp1>
+     inline shared_ptr<_Tp>
+diff -ur a/bits/stl_bvector.h b/bits/stl_bvector.h
+--- a/bits/stl_bvector.h	2011-03-15 14:49:05.000000000 -0700
++++ b/bits/stl_bvector.h	2011-05-02 23:34:46.000000000 -0700
+@@ -743,11 +743,7 @@
+     }
+ 
+     void
+-#ifdef __GXX_EXPERIMENTAL_CXX0X__
+-    swap(vector&& __x)
+-#else
+     swap(vector& __x)
+-#endif
+     {
+       std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
+       std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
 diff -ur a/bits/stl_deque.h b/bits/stl_deque.h
 --- a/bits/stl_deque.h	2011-03-15 14:49:05.000000000 -0700
 +++ b/bits/stl_deque.h	2011-03-29 10:33:39.000000000 -0700

       {
 	using std::swap;
 	swap(first, __p.first);
diff -ur a/bits/stl_set.h b/bits/stl_set.h
--- a/bits/stl_set.h	2011-03-15 14:49:05.000000000 -0700
+++ b/bits/stl_set.h	2011-03-29 10:33:39.000000000 -0700

       { _M_t.swap(__x._M_t); }
 
       // insert/erase
diff -ur a/bits/stl_stack.h b/bits/stl_stack.h
--- a/bits/stl_stack.h	2011-03-15 14:49:05.000000000 -0700
+++ b/bits/stl_stack.h	2011-05-02 23:36:36.000000000 -0700
@@ -213,7 +213,7 @@
 
 #ifdef __GXX_EXPERIMENTAL_CXX0X__
       void
-      swap(stack&& __s)
+      swap(stack& __s)
       { c.swap(__s.c); }
 #endif
     };
diff -ur a/bits/stl_tree.h b/bits/stl_tree.h
--- a/bits/stl_tree.h	2011-03-15 14:49:05.000000000 -0700
+++ b/bits/stl_tree.h	2011-03-29 10:33:39.000000000 -0700
